Как создать событие «изменение» для переменной в Java?

Есть переменная с типом double. Значение этой переменной рассчитывается в бесконечном цикле и оно постоянно изменяется. Это значение должно выводится на форму в JTextField. Сейчас у меня создан нехитрый класс-наследник от JTextField:

public class ChartTabTextField extends JTextField {
    private double factor = 1.0;
    private String format = "%d";

    public ChartTabTextField(double d, String format, double factor) {
        this.factor = factor;
        this.format = format;
        setText(d);
    }

    public void setText(double d) {
        if (format.equals("%d")) {
            setText(String.format(format, (int) (d * factor)));
        } else {
            setText(String.format(format, d * factor));
        }
    } 
}


на форму он попадает так:
ChartTabTextField jtf = new ChartTabTextField(ve.pot.params.amp, "%.1f", 0.001);
jPanel1.add(jtf);


Вопрос: как привязать значение переменной ve.pot.params.amp к jTextField?

Вариант с setText из тела цикла не подходит, потому что таких переменных будет много (как и компонентов на форме) и все они рассчитываются в разных местах, а могут и не рассчитываться. В общем хочется некоторой универсальности или упрощенности что-ли: добавил на форму вывод нужной переменной и она автоматически стала "отслеживаемой". Как и с помощью каких классов написать такую "следилку", чтобы она автоматом делала setText?

п.с. ну как в QML: если там создать текстовое поле и установить на текст глобальную переменную, то текст будет автоматом меняться вместе со значением этой переменной. Там даже ничего делать не нужно :)
  • Вопрос задан
  • 2161 просмотр
Пригласить эксперта
Ответы на вопрос 1
@onepavel
Консультация и разработка мобильных приложений
Смотрите, есть 2 основных способа взаимодействия объекта с другим объектом.
1 объект получает другой объект,
2 объект сам берет то, что ему нужно
Если вы не хотите делать setText, тогда JTextField сам должен брать значение.
Вам стоит уйти от примитива в боксинг значения или лучше создайте класс,
который будет контролировать изменение, а JTextField может выступать в
роли слушателя через некий интерфейс
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы