Как создать всплывающие окна в javafx

Я хочу создать всплывающие окна в javafx application.give. Мне нужна идея.
enter image description here

когда я нажимаю кнопку проверки, открываю всплывающие окна. как это сделать?

Ответы

Ответ 1

Вы можете либо создать новый Stage, добавить в него свои элементы управления, либо если вам нужен POPUP как Dialog, то вы можете использовать DialogsFX или ControlsFX (требуется JavaFX8)

Для создания нового этапа вы можете использовать следующий фрагмент

@Override
public void start(final Stage primaryStage) {
    Button btn = new Button();
    btn.setText("Open Dialog");
    btn.setOnAction(
        new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                final Stage dialog = new Stage();
                dialog.initModality(Modality.APPLICATION_MODAL);
                dialog.initOwner(primaryStage);
                VBox dialogVbox = new VBox(20);
                dialogVbox.getChildren().add(new Text("This is a Dialog"));
                Scene dialogScene = new Scene(dialogVbox, 300, 200);
                dialog.setScene(dialogScene);
                dialog.show();
            }
         });
    }

Если вы не хотите, чтобы он был modal (заблокируйте другие окна), используйте:

dialog.initModality(Modality.NONE);

Ответ 2

Класс Popup может быть лучше, чем класс Stage, в зависимости от того, что вы хотите. Этап либо модальный (вы не можете нажимать на что-либо еще в своем приложении), либо он исчезает, если вы щелкните в другом месте вашего приложения (потому что это отдельное окно). Всплывающее окно остается сверху, но не модально.

См. этот Пример всплывающего окна.

Ответ 3

Вы просмотрели ControlsFx Popover control.


import org.controlsfx.control.PopOver;
import org.controlsfx.control.PopOver.ArrowLocation;

private PopOver item;

final Scene scene = addItemButton.getScene();

final Point2D windowCoord = new Point2D(scene.getWindow()
        .getX(), scene.getWindow().getY());

final Point2D sceneCoord = new Point2D(scene.getX(), scene.
                getY());

final Point2D nodeCoord = addItemButton.localToScene(0.0,
                        0.0);
final double clickX = Math.round(windowCoord.getX()
    + sceneCoord.getY() + nodeCoord.getX());

final double clickY = Math.round(windowCoord.getY()
        + sceneCoord.getY() + nodeCoord.getY());
item.setContentNode(addItemScreen);
item.setArrowLocation(ArrowLocation.BOTTOM_LEFT);
item.setCornerRadius(4);                            
item.setDetachedTitle("Add New Item");
item.show(addItemButton.getParent(), clickX, clickY);

Это только пример, но PopOver звучит так, будто он может выполнить то, что вы хотите. Подробнее см. .

Важное примечание: ControlsFX будет работать только на JavaFX 8.0 b118 или новее.