JavaFX 2.1 MessageBox

时间:2012-07-26 05:23:26

标签: java javafx javafx-2

美好的一天!
我正在使用JavaFX SDK开发一个程序。我想要一个像C#中的消息框:

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

我想使用JavaFX SDK获得这样的功能。答案非常感谢。

8 个答案:

答案 0 :(得分:18)

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.");
    }
});

答案 1 :(得分:6)

更新

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

原始答案

以下是Modal Confirm对话框的示例。它的工作原理是创建一个包含场景的舞台,其中包含对话框内容,然后在场景上调用show()。

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

如果你想要一个专业的Java 8消息框,我建议使用ControlsFX library中的对话框,这是后来在blo0p3r的答案中提到的JavaFX UI控件沙箱中对话框的迭代。

答案 2 :(得分:4)

OSS的JavaFX 2.2上的MessageBox是here

我认为它会对你有所帮助。

MessageBox.show(primaryStage,
    "Message Body",
    "Message Title", 
    MessageBox.ICON_INFORMATION | MessageBox.OK | MessageBox.CANCEL);

答案 3 :(得分:3)

这是另一个简单的替代方案:https://sites.google.com/site/martinbaeumer/programming/open-source/fxmessagebox

令人惊讶的是,JavaFX 2.2中仍然没有可用的标准消息框

答案 4 :(得分:2)

这就是我最终使用的内容,这是JavaFX UI Controls Sandbox宣布的here FX体验的一部分:

这是一个不错且易于使用的对话框。无法与其他人比较,因为这是我用过的唯一一个。没问题。

代码非常简洁。看起来像这样:

//calling from a different controller and don't have the scene object loaded.
Stage stage = (Stage)deleteButton.getScene().getWindow();
DialogResponse response = Dialogs.showConfirmDialog(stage, "Are you sure ...", "Confirm deletion","Delete?", DialogOptions.OK_CANCEL);
if(response == DialogResponse.OK) {
    //...
}

答案 5 :(得分:2)

使用命名空间:

import javafx.scene.control.Alert;

从主线程调用:

public void showAlert() { 
    Alert alert = new Alert(Alert.AlertType.INFORMATION);
    alert.setTitle("Message Here...");
    alert.setHeaderText("Look, an Information Dialog");
    alert.setContentText("I have a great message for you!");
    alert.showAndWait();
}

从主线程调用:

public void showAlert() {
    Platform.runLater(new Runnable() {
      public void run() {
          Alert alert = new Alert(Alert.AlertType.INFORMATION);
          alert.setTitle("Message Here...");
          alert.setHeaderText("Look, an Information Dialog");
          alert.setContentText("I have a great message for you!");
          alert.showAndWait();
      }
    });
}

答案 6 :(得分:0)

目前我使用此库来显示Dialogs。也许它对你有用:

https://github.com/4ntoine/JavaFxDialog

答案 7 :(得分:0)

这是一个非常简单的示例: 警报警报=新警报(AlertType.CONFIRMATION,“确定要继续吗?”);