Что такое слушатель и как реализовать его на JavaFX TextField? - PullRequest
0 голосов
/ 23 марта 2019

Я просматривал здесь на StackOverflow решение проблемы: по сути, я хочу, чтобы TextField ограничивал ввод данных пользователем только числовыми значениями / целыми числами.Я нашел ответ, в котором упоминается слушатель:

public class CubeController {

  public Label areaCube, volumeCube;
  public TextField insertValue;

  public void checkValue(){
  insertValue.textProperty().addListener(new ChangeListener<String>() {
    @Override
    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
      if (!newValue.matches("\\d{0,7}([\\.]\\d{0,4})?")) {
        insertValue.setText(oldValue);
      }
    }
  });}

}

Я пытался реализовать его в TextField, но безуспешно.(Инициализировано в файле FXML) Что такое слушатель и почему он не влияет на мой TextField?Спасибо всем.

<TextField onAction="#checkValue" fx:id="insertValue" layoutX="269.0" layoutY="178.0" promptText="Insert edge measure" />

1 Ответ

0 голосов
/ 23 марта 2019

Цель слушателя - наблюдать определенное значение, в вашем случае текст внутри текстового поля.Всякий раз, когда происходит изменение в значении вашего текста, например, когда вы что-то печатаете, вызывается измененный метод, и вы получаете три параметра: объект, который вы наблюдаете, предыдущее значение перед изменением и новое значение после того, какизменилось.Теперь, чтобы сделать слушателя, вам нужно иметь класс контроллера и определить, что он должен делать при изменении наблюдаемого значения.

Вот ссылка на то, как вы можете получить текстовое поле из fxml Как получить текст изfxml TextField

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...