JavaFX 2.1 MessageBox

2022-09-02 23:34:29

日安!
我正在使用JavaFX SDK开发一个程序。我想要一个像C#中那样的消息框:

DialogResult rs = MessageBox.showDialog("Message Here...");
if (rs == ....) {
    // code
}

我想使用JavaFX SDK拥有这样的功能。非常感谢您的回答。


答案 1

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Alert.html

Alert 类对 Dialog 类进行子类类化,并为许多预构建的对话类型提供支持,这些类型可以很容易地向用户显示以提示响应。

所以代码看起来像这样

Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Message Here...");
alert.setHeaderText("Look, an Information Dialog");
alert.setContentText("I have a great message for you!");
alert.showAndWait().ifPresent(rs -> {
    if (rs == ButtonType.OK) {
        System.out.println("Pressed OK.");
    }
});

答案 2

更新

从Java8u40开始,核心JavaFX库包括对话框(消息框)功能。请参阅以下类的文档:

有关如何使用该类的快速信息,请参阅此问题的其他答案:Alert

有关更长的教程,请参阅 Makery JavaFX 对话框教程强烈建议使用此教程)。

原始答案

下面是模式确认对话框的示例。它的工作原理是创建一个包含对话框内容的场景的舞台,然后在该场景中调用 show()。

如果您希望主处理线程在显示新舞台时使用 JavaFX 2.2+ 时暂停,则可以在舞台上调用 showAndWait() 而不是 show。修改为使用显示和等待,只显示一条消息和确定按钮,则处理应该与C# MessageBox非常相似。

如果你想要一个适用于Java 8的专业消息框,我建议使用 ControlsFX 库中的对话框,这是 blo0p3r 的答案中提到的 JavaFX UI Controls Sandbox 中对话框的后续迭代。


推荐