0

私はこの非常に単純なモーダル ダイアログを持っています:

public class DialogPanels
{

    public void initClosemainAppDialog(final Stage primaryStage)
    {

        primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>()
        {
            @Override
            public void handle(WindowEvent event)
            {
                event.consume(); // Do nothing on close request

                // Dialog Stage init
                final Stage dialog = new Stage();
                // If you want to freeze the background during dialog appearence set Modality.APPLICATION_MODAL
                // or to allow clicking on the mainstage components set Modality.NONE
                // and set dialog.showAndWait();
                dialog.initModality(Modality.APPLICATION_MODAL);
                dialog.initOwner(primaryStage);

                // Frage - Label
                Label label = new Label("Exit from the program");

                // Button "Yes"
                Button okBtn = new Button("Yes");
                okBtn.setOnAction(new EventHandler<ActionEvent>()
                {
                    @Override
                    public void handle(ActionEvent event)
                    {
                        //primaryStage.close();
                        //dialog.close();
                        //Platform.exit();    
                        System.exit(0);
                    }
                });

                // Button "No"
                Button cancelBtn = new Button("No");
                cancelBtn.setOnAction(new EventHandler<ActionEvent>()
                {
                    @Override
                    public void handle(ActionEvent event)
                    {
                        primaryStage.show();
                        dialog.close();
                    }
                });

                // Layout for the Button
                HBox hbox = new HBox();
                hbox.setSpacing(10);
                hbox.setAlignment(Pos.CENTER);
                hbox.getChildren().add(okBtn);
                hbox.getChildren().add(cancelBtn);

                // Layout for the Label and hBox
                VBox vbox = new VBox();
                vbox.setAlignment(Pos.CENTER);
                vbox.setSpacing(10);
                vbox.getChildren().add(label);
                vbox.getChildren().add(hbox);

                // Stage
                Scene scene = new Scene(vbox, 450, 150, Color.WHITESMOKE);
                dialog.setScene(scene);
                dialog.show();
            }
        });

    }
}

画像を追加して、次のようにしたいと思います。

ここに画像の説明を入力

しかし、私の短い知識では適切な結果を得るには複雑すぎると思います。ダイアログを分割し、2 番目の背景を追加し、コードをこの例と同じように見せる方法を教えてください。

4

1 に答える 1

2

ControlsFX プロジェクトを見てください。いくつかの洗練されたダイアログがあり、オープン ソースであるため、その方法を調べることができます。たとえば、ダイアログは次の ControlsFX の確認ダイアログのようになります。

ここに画像の説明を入力

カスタム ダイアログのサポートもあります。

€dit: 「マストヘッドの表示」オプションを有効にすると、実際にはまったく同じように見えます。

ここに画像の説明を入力

于 2013-06-07T15:34:18.383 に答える