JavaFX 2.1 MessageBox
Добрый день!
Я разрабатываю программу с использованием JavaFX SDK. Я хотел иметь окно сообщения, как в C#:
DialogResult rs = MessageBox.showDialog("Message Here...");
if (rs == ....) {
// code
}
Я хочу иметь такую функциональность, как эта, используя JavaFX SDK. Ответы очень ценятся.
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:
- ссылка на учебник: http://code.makery.ch/blog/javafx-2-dialogs
- ссылка на исходный код: https://github.com/marcojakob/javafx-ui-sandbox/tree/master/javafx-dialogs
Это приятный и простой в использовании диалог. Не могу сравнить с другими, так как это единственный, который я использовал. Никаких проблем с оно.
Код очень лаконичен. Выглядит так:
//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(); } }); }
На данный момент я использую эту библиотеку для отображения диалогов. Может быть, это может быть полезно для вас:
Это очень простой пример. : Alert alert = новое предупреждение (AlertType.Подтверждение: "вы уверены, что хотите продолжить?");
Comments