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();
            }
        });

    }
}

我想添加图像并使其看起来像这样:

在此处输入图像描述

但是我认为这对于我的短知识来说太复杂了,无法获得适当的结果。你能告诉我如何拆分对话框,添加第二个背景并使我的代码看起来与这个示例相同吗?

4

1 回答 1

2

看看ControlsFX 项目,他们有一些复杂的对话框并且它是开源的,所以你可以查看它是如何完成的。例如,您的对话框看起来像 ControlsFX 的确认对话框:

在此处输入图像描述

还支持自定义对话框。

€dit:启用“显示标头”选项后,它实际上看起来就像它:

在此处输入图像描述

于 2013-06-07T15:34:18.383 回答