it-roy-ru.com

JavaFX 2.1 MessageBox

Добрый день! 
Я занимаюсь разработкой программы с использованием JavaFX SDK. Я хотел иметь окно сообщения, как в C #: 

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

Я хочу иметь такую ​​функциональность, используя JavaFX SDK. Ответы очень ценятся.

10
iSa

Обновление

Начиная с Java8u40, основные библиотеки JavaFX включают в себя диалоговое окно (окно сообщения). Обратитесь к документации для следующих классов:

Оригинальный ответ

Вот пример диалогового окна Modal Confirm . Он работает, создавая сцену, содержащую сцену с содержимым диалога, а затем вызывая show () в сцене.

Если вы хотите, чтобы основной поток обработки приостановился, пока отображается новая сцена, и вы используете JavaFX 2.2+, то вы можете вызвать showAndWait () в рабочей области, а не в show. Модифицированный, чтобы использовать show и wait и просто отображать сообщение и кнопку ОК, тогда обработка должна действовать очень похоже на C # MessageBox.

Если вы хотите получить профессионально выглядящее окно сообщения для Java 8, я рекомендую использовать диалоги из библиотеки ControlsFX , которая является более поздней итерацией диалогов в изолированной программной среде элементов управления JavaFX, упомянутых в ответе blo0p3r.

6
jewelsea

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

MessageBox на JavaFX 2.2 от OSS находится здесь

Я думаю, что это поможет вам.

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

Вот еще одна простая альтернатива: https://sites.google.com/site/martinbaeumer/programming/open-source/fxmessagebox

Удивительно, что в JavaFX 2.2 все еще нет стандартного окна сообщения

3
Martin Baeumer

Это то, что я в конечном итоге использовал, который является частью Песочницы для управления пользовательским интерфейсом JavaFX как было объявлено здесь на FX Experience: 

Это приятный и простой в использовании диалог. Не могу сравнить с другими, так как это единственный, который я использовал. Никаких проблем с этим.

Код очень лаконичен. Выглядит так: 

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

Используйте пространство имен:

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

Это очень простой пример: Alert alert = new Alert (AlertType.CONFIRMATION, «Вы уверены, что хотите продолжить?»);

0
yasin

На данный момент я использую эту библиотеку для показа диалогов. Может быть, это может быть полезно для вас:

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

0
Perneel