JavaFX 2.1 MessageBox



Добрый день!

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



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


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

711   8  

8 ответов:

обновить

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

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

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

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

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

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

MessageBox на JavaFX 2.2 от OSS - это здесь

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

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

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

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

Это то, что я в конечном итоге использовал, что является частью JavaFX UI Controls Sandbox, Как объявлено здесь на 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) {
    //...
}

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

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

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

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

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

Comments

    Ничего не найдено.