Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaFX 2.1 MessageBox

Good day!
I am developing a program using JavaFX SDK. I wanted to have a message box like in C#:

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

I want to have a functionality like this using JavaFX SDK. Answers are very much appreciated.

like image 519
iSa Avatar asked Jul 26 '12 05:07

iSa


4 Answers

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

The Alert class subclasses the Dialog class, and provides support for a number of pre-built dialog types that can be easily shown to users to prompt for a response.

So the code looks something like

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.");
    }
});
like image 100
lmat - Reinstate Monica Avatar answered Nov 15 '22 11:11

lmat - Reinstate Monica


Update

As of Java8u40, the core JavaFX libraries include dialog (message box) functionality. Refer to the documentation for the following classes:

  • Alert
  • Dialog (and subclasses)

For quick info on how to use the Alert class, refer to other answers to this question:

  • by user Limited Atonemment
  • by user Andrei Krasutski

For a longer tutorial, refer to the Makery JavaFX dialog tutorial (this tutorial is highly recommended).

Original Answer

Here is an example of a Modal Confirm dialog. It works by creating a Stage containing a Scene with the dialog contents in it, and then calling show() on the Scene.

If you want the main processing thread to pause whilst the new Stage is shown and you are using JavaFX 2.2+, then you can call showAndWait() on the Stage rather than show. Modified to use show and wait and just display a message and ok button, then processing should act quite similar to a C# MessageBox.

If you want a professional looking message box for Java 8, I recommend using the dialogs from the ControlsFX library, which is a later iteration of the dialogs in the JavaFX UI Controls Sandbox mentioned in blo0p3r's answer.

like image 22
jewelsea Avatar answered Nov 15 '22 11:11

jewelsea


MessageBox on JavaFX 2.2 by OSS is here

I think it will help you.

MessageBox.show(primaryStage,
    "Message Body",
    "Message Title", 
    MessageBox.ICON_INFORMATION | MessageBox.OK | MessageBox.CANCEL);
like image 4
Tosiki Iga Avatar answered Nov 15 '22 10:11

Tosiki Iga


Use the namespace:

import javafx.scene.control.Alert;

Calling from main thread:

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

Calling from not main thread:

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();
      }
    });
}
like image 4
Andrei Krasutski Avatar answered Nov 15 '22 09:11

Andrei Krasutski