web-dev-qa-db-fra.com

JavaFX 2.1 MessageBox

Bonne journée! 
Je développe un programme utilisant JavaFX SDK. Je voulais avoir une boîte de message comme en C #: 

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

Je veux avoir une fonctionnalité comme celle-ci en utilisant JavaFX SDK. Les réponses sont très appréciées.

10
iSa

Mise à jour

Depuis Java8u40, les bibliothèques JavaFX principales incluent une fonctionnalité de boîte de dialogue. Reportez-vous à la documentation pour les classes suivantes:

Réponse originale

Voici un exemple de dialogue Modal Confirm . Cela fonctionne en créant une scène contenant une scène avec le contenu de la boîte de dialogue, puis en appelant show () sur la scène.

Si vous souhaitez que le thread de traitement principal suspende pendant que la nouvelle scène est affichée et que vous utilisez JavaFX 2.2+, vous pouvez appeler showAndWait () plutôt que montrer. Modifié pour utiliser show and wait et simplement afficher un message et un bouton ok, le traitement devrait alors ressembler beaucoup à un C # MessageBox.

Si vous voulez une boîte de message de qualité professionnelle pour Java 8, je vous recommande d'utiliser les boîtes de dialogue de la bibliothèque ControlsFX , qui est une itération ultérieure des boîtes de dialogue de la Sandbox de l'interface utilisateur JavaFX mentionnée dans la réponse de blo0p3r.

6
jewelsea

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

La classe Alert sous-classe la classe Dialog et prend en charge un certain nombre de types de boîtes de dialogue prédéfinis pouvant être facilement montrés aux utilisateurs en leur demandant de répondre.

Donc, le code ressemble à quelque chose comme

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

MessageBox sur JavaFX 2.2 par OSS est ici

Je pense que cela vous aidera.

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

Voici une autre alternative simple: https://sites.google.com/site/martinbaeumer/programming/open-source/fxmessagebox

Surprise qu'il n'y ait toujours pas de boîte de message standard disponible dans JavaFX 2.2

3
Martin Baeumer

C’est ce que j’ai utilisé, qui fait partie du Commandes Sandbox de l’interface utilisateur JavaFX comme annoncé ici sur FX Experience: 

C'est un dialogue agréable et facile à utiliser. Je ne peux pas comparer avec les autres, car c’est le seul que j’ai utilisé. Aucun problème avec elle.

Le code est très concis. Ressemble à ça : 

//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) {
    //...
}
2
blo0p3r

Utilisez le namespace:

import javafx.scene.control.Alert;

Appeler depuis le fil principal:

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

Appeler depuis le fil principal:

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

Voici un exemple très simple: Alerte alert = new Alert (AlertType.CONFIRMATION, "Êtes-vous sûr de vouloir continuer?");

0
yasin

Pour le moment, j'utilise cette bibliothèque pour montrer des dialogues. Peut-être que cela peut vous être utile:

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

0
Perneel