it-swarm.com.de

JavaFX 2.1 MessageBox

Schönen Tag! 
Ich entwickle ein Programm mit JavaFX SDK. Ich wollte ein Meldungsfeld wie in C # haben: 

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

Ich möchte eine solche Funktionalität mit JavaFX SDK haben. Antworten werden sehr geschätzt.

10
iSa

Update

Ab Java8u40 enthalten die wichtigsten JavaFX-Bibliotheken die Dialogfunktion (Meldungsfeld). In der Dokumentation finden Sie die folgenden Klassen:

Ursprüngliche Antwort

Hier ist ein Beispiel für einen Modal Confirm Dialog. Dazu erstellen Sie eine Bühne, die eine Szene mit dem Inhalt des Dialogs enthält, und rufen dann show () in der Szene auf.

Wenn Sie möchten, dass der Hauptverarbeitungsthread angehalten wird, während die neue Bühne angezeigt wird und Sie JavaFX 2.2+ verwenden, können Sie showAndWait () auf der Bühne anstelle von show aufrufen. Die Anzeige wurde so geändert, dass show und wait verwendet wird, und es werden nur eine Nachricht und die Schaltfläche "OK" angezeigt. Die Verarbeitung sollte sich dann ähnlich wie bei einer C # MessageBox verhalten.

Wenn Sie eine professionell aussehende Meldungsbox für Java 8 suchen, empfehle ich die Verwendung der Dialoge aus der ControlsFX-Bibliothek . Dies ist eine spätere Wiederholung der Dialoge in der JavaFX-UI-Controls-Sandbox, die in der Antwort von blo0p3r erwähnt wird.

6
jewelsea

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

Die Alert-Klasse ist eine Unterklasse der Dialog-Klasse und bietet Unterstützung für eine Reihe vorgefertigter Dialogtypen, die Benutzern leicht angezeigt werden können, um eine Antwort aufzufordern.

Der Code sieht also ungefähr so ​​aus

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

MessageBox auf JavaFX 2.2 von OSS ist hier

Ich denke es wird dir helfen.

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

Hier ist eine weitere einfache Alternative: https://sites.google.com/site/martinbaeumer/programming/open-source/fxmessagebox

Überraschend ist, dass in JavaFX 2.2 immer noch kein Standard-Meldungsfeld verfügbar ist

3
Martin Baeumer

Dies ist, was ich verwendet habe, das Teil der JavaFX UI Controls Sandbox wie angekündigt hier auf FX Experience ist: 

Dies ist ein schöner und benutzerfreundlicher Dialog. Kann nicht mit anderen vergleichen, da dies die einzige ist, die ich verwendet habe. Keine Probleme damit.

Der Code ist sehr knapp. Sieht aus wie das : 

//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

Verwenden Sie den Namespace:

import javafx.scene.control.Alert;

Aufruf aus dem Hauptthread:

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

Aufruf von nicht Hauptthread:

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

Dies ist ein sehr einfaches Beispiel: Alert Alert = New Alert (AlertType.CONFIRMATION, "Möchten Sie wirklich fortfahren?");

0
yasin

Im Moment verwende ich diese Bibliothek zum Anzeigen von Dialogen. Vielleicht kann es für Sie nützlich sein:

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

0
Perneel