web-dev-qa-db-ja.com

javafxでポップアップウィンドウを作成する方法

Javafxアプリケーションでポップアップウィンドウを作成したいのですが、アイデアを教えてください。
enter image description here

チェックボタンをクリックすると、ポップアップウィンドウが開きます。実行する方法?

19
Maulik Patel

新しい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);
35
ItachiUchiha

Popupクラスは、必要に応じてStageクラスよりも優れている場合があります。ステージはモーダル(アプリ内の他のものはクリックできない)であるか、アプリ内の別の場所をクリックすると消えます(別のウィンドウであるため)。ポップアップは上部に表示されますが、モーダルではありません。

これを参照してください ポップアップウィンドウ の例。

5
RyanR

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は、あなたが望むものを達成できるように思えます。詳細については、 documentation をご覧ください。

重要な注意:ControlsFXはJavaFX 8.0 b118以降でのみ動作します。

0
broot02

非常にシンプルなダイアログポップアップを探している場合は、jfxmessagebox( http://en.sourceforge.jp/projects/jfxmessagebox/ )をご覧ください。

0
Sudip Saha