Как мне создать всплывающее сообщение для предупреждения пользователя о неполных полях?

#java #javafx #fxml #scenebuilder

#java #javafx #fxml #scenebuilder

Вопрос:

Итак, мне нужно создать всплывающее сообщение, которое предупредит пользователя, если он не ввел данные.

Например, у меня есть 3 списка со списком — если бы я оставил один из них без пользовательского ввода и попытался изменить сцены, появилось бы предупреждение с просьбой «пожалуйста, убедитесь, что все поля заполнены».

Приведенный ниже код — это всего лишь простое всплывающее окно, которое мне нужно будет связать с классом MyController.

 import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.event.*;
import javafx.geometry.Pos;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.*;
import javafx.stage.*;

import java.awt.*;
import java.awt.Label;
import java.awt.Window;

public class MissingData extends Application {
    private static final String[] SAMPLE_TEXT = "hjgjguk".split(" ");

    @Override
    public void start(Stage primaryStage) throws Exception {
        VBox textContainer = new VBox(10);
        textContainer.setStyle("-fx-background-color: pink; -fx-padding: 10;");

        primaryStage.setScene(new Scene(textContainer, 300, 200));
        primaryStage.show();
}
  

Комментарии:

1. Примечание: вы смешиваете импорт Swing ( awt ) и JavaFX. Скорее всего, в будущем вы столкнетесь с некоторыми конфликтами, если не исправите это. JavaFX предоставляет свои собственные Label и Window классы.

Ответ №1:

JavaFX поставляется с Dialogs API, который предоставляет несколько вариантов всплывающих оповещений. Одним из таких классов, что неудивительно, является javafx.scene.control.Класс Alert. На самом деле вам нет необходимости писать для этого свой собственный класс popup.

Создать и отобразить простое Alert действительно очень просто:

 Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("Error");
alert.setHeaderText("This is header text.");
alert.setContentText("This is content text.");
alert.showAndWait();
  

Этот код выдает следующее предупреждение:

скриншот


Для проверки введенного пользователем, например, одного из ваших ComboBox значений, просто используйте простой if оператор для проверки правильности выбора. Если запись отсутствует ( null ) или недействительна, покажите alert :

 if (comboBox1.getValue() == null) {
  alert.showAndWait();
}
  

Существует намного больше опций для более сложных диалоговых окон. Вы можете увидеть несколько замечательных примеров здесь: Диалоги JavaFX (официальные.