JavaFX 2.1 MessageBox
Добрый день!
Я разрабатываю программу с использованием JavaFX SDK. Я хотел иметь окно сообщения, как в С#:
DialogResult rs = MessageBox.showDialog("Message Here...");
if (rs == ....) {
// code
}
Я хочу иметь такую функциональность, используя JavaFX SDK. Ответы очень ценятся.
Ответы
Ответ 1
Update
Как и в Java8u40, основные библиотеки JavaFX включают в себя диалоговое окно (окно сообщения). Обратитесь к документации для следующих классов:
Оригинальный ответ
Ниже приведен пример диалогового окна Modal Confirm. Он работает, создавая сцену, содержащую сцену, с содержимым диалога в ней, а затем вызывает show() в Сцене.
Если вы хотите, чтобы основной поток обработки приостанавливался, пока отображается новая сцена, а вы используете JavaFX 2.2+, вы можете вызывать showAndWait() на сцене, а не показывать. Модифицированный для использования show и wait и просто отображение сообщения и кнопки ok, тогда обработка должна действовать очень похоже на С# MessageBox.
Если вам нужна профессионально выглядящая коробка сообщений для Java 8, я рекомендую использовать диалоги из библиотеки ControlsFX, которая представляет собой более позднюю итерацию диалоги в панели управления JavaFX UI Controls, упомянутые в ответе blo0p3r.
Ответ 2
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.");
}
});
Ответ 3
MessageBox на JavaFX 2.2 OSS здесь
Я думаю, это поможет вам.
MessageBox.show(primaryStage,
"Message Body",
"Message Title",
MessageBox.ICON_INFORMATION | MessageBox.OK | MessageBox.CANCEL);
Ответ 4
Вот еще одна простая альтернатива: https://sites.google.com/site/martinbaeumer/programming/open-source/fxmessagebox
Удивительно, что в JavaFX 2.2 нет стандартного окна сообщений
Ответ 5
Это то, что я использовал, что является частью JavaFX UI Controls Sandbox, как было объявлено здесь об опыте FX:
Это приятный и простой в использовании диалог. Нельзя сравнивать с другими, поскольку это единственный, который я использовал. Нет проблем с этим.
Код очень краткий. Выглядит так:
//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) {
//...
}
Ответ 6
Используйте пространство имен:
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();
}
});
}
Ответ 7
В данный момент я использую эту библиотеку для отображения диалоговых окон. Возможно, это может быть полезно для вас:
https://github.com/4ntoine/JavaFxDialog