#8 – окно с регистрацией на javafx
В ходе урока мы создадим дополнительное окно для регистрации в приложении. На странице этого окна пользователь сможет вводить данные и регистрировать в программе. Регистрация будет происходить через базу данных.
Наше приложение будет состоять из трёх окон:
- окно регистрации;
- окно авторизации;
- главное окно, что будет показано лишь после авторизации пользователя.
В уроке мы добавили окно с регистрацией и теперь можем приступать к написанию всех необходимых функций для приложения.
В ходе следующих уроков мы создадим весь функционал для приложения, который позволит регистрировать и добавлять пользователя в БД, а также авторизовывать пользователя в приложении.
Javafx.stage.modality java exaples
The following examples show how to use
javafx.stage.modality.
You can vote up the ones you like or vote down the ones you don’t like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Example #2
Example #3
Example #4
Example #5
Example #6
Example #7
Example #8
Example #9
Example #10
Example #11
Example #12
Example #13
Example #14
Example #15
Example #16
Example #17
Example #18
Example #19
Example #20
public static void showDialog(Window owner, String title, Message message) { alert = new Alert(AlertType.NONE); alert.initOwner(owner); alert.setTitle(title); ObservableMap<String, String> messages = message.getMessages(); StringBuilder msg = new StringBuilder(); messages.forEach((key, value) -> msg.append(String.format("%st: %s%n", key, value))); alert.getDialogPane().setMinHeight(messages.size() * 30d); alert.setContentText(msg.toString()); // Run with small delay on each change messages.addListener((Change<? extends String, ? extends String> change) -> Platform.runLater(() -> { StringBuilder msgChange = new StringBuilder(); messages.forEach((key, value) -> msgChange.append(String.format("%st: %s%n", key, value))); alert.setContentText(msgChange.toString()); if (messages.values().stream().allMatch(val -> val.startsWith(Message.processed))) { stopDialog(); message.clearMessages(); } })); alert.initModality(Modality.APPLICATION_MODAL); alert.getDialogPane().getStylesheets() .add(LoadDialog.class.getResource("/css/application.css").toExternalForm()); // Calculate the center position of the parent Stage double centerXPosition = owner.getX() owner.getWidth() / 2d; double centerYPosition = owner.getY() owner.getHeight() / 2d; alert.setOnShowing(e -> { alert.setX(centerXPosition - alert.getDialogPane().getWidth() / 2d); alert.setY(centerYPosition - alert.getDialogPane().getHeight() / 2d); }); alert.show(); }
Example #21
Example #22
Example #23
Example #24
Example #25
Example #26
Example #27
Example #28
Example #29
Example #30
Как создать модальное окно в javafx 2.1
здесь ссылка на решение Я создал ранее для модальных диалогов в JavaFX 2.1
Решение создает модальный этап поверх текущего этапа и выполняет действия по результатам диалога с помощью обработчиков событий для элементов управления диалогом.
обновление
Предыдущее связанное решение использует датированный подход обработчика событий для принятия мер после того, как диалог был отклонен. Этот подход действителен для реализаций до JavaFX 2.2. Для JavaFX 8 есть нет необходимости в обработчиках событий, вместо этого используйте новый этап showAndWait()
метод. Например:
Stage dialog = new Stage();
// populate dialog with controls.
...
dialog.initOwner(parentStage);
dialog.initModality(Modality.APPLICATION_MODAL);
dialog.showAndWait();
// process result of dialog operation.
...
обратите внимание, что для того, чтобы все работало так, как ожидалось, важно инициализировать владельца сцены и для инициализации модальности этапа либо WINDOW_MODAL или APPLICATION_MODAL.
есть некоторые высококачественные стандартные диалоги пользовательского интерфейса в JavaFX 8 и ControlsFX, если они соответствуют вашим требованиям, я советую использовать их, а не разрабатывать свои собственные. Эти встроенные JavaFX и предупреждение классы также имеют initOwner
и initModality
и showAndWait
методы, так что вы можете установить модальность для них, как вы хотите (обратите внимание, что по умолчанию встроенные диалоги являются модальными приложениями).
Откройте новое окно (window) в javafx
В JavaFX чтобы создать окно (window) используйте класс Stage (Сцена).
Существует 3 вида модальости(modelity), которые вы можете применить для Stage через метод stage.initModality(Modelity).
- Modelity.NONE
- Modelity.WINDOW_MODAL
- Modelity.APPLICATION_MODAL
При создании нового Stage, вы можете настроить для него родительское окно (Так же называется окно, которое владеет им), через метод stage.initOwner(parentStage).
No | Модальность | Описание |
1 | Modelity.NONE | Когда вы открываете новое окно с этой модальностью (modelity), новое окно будет независимым по отношению к родительскому окну. Вы можете интерактировать с родительским окном, или закрыть его не влияя на новое окно. |
2 | Modelity.WINDOW_MODAL | Когда вы открываете новое окно с этой модальностью (modelity), новое окно блокирует родительское окно. Вы не можете интерактировать с родительским окном, до тех пор, пока это окно не закроется. |
3 | Modelity.APPLICATION_MODAL | Когда вы открываете новое окно с этой модальностью (modelity), оно блокирует все другие окна приложения. Вы не можете интерактировать ни с каким окном, до тех пор пока это окно не закроется. |
Например, когда вы нажимете на Button на окне 1, он откроет второе окно с модальностью (modelity) по умолчанию (Modeless Window / Modelity.NONE).
Например, когда вы нажимете на Button на окне 1, он откроет новое окно с модальностью Modal Window (Modelity.WINDOW_MODAL). Когда еще отображается новое окно, вы не можете интерактировать с родительским окном.