Обновление элемента внутри контейнера JComponent - PullRequest
0 голосов
/ 25 марта 2019

Извините за отсутствие кода.

  1. Класс CustomThing расширяется JComponent. Внутри него добавлен новый JLabel. Метка должна быть обновлена ​​из текстового поля во внешнем классе. Как получить доступ к метке setText, чтобы текстовое поле обновляло метку должным образом?
  2. То же, что и 1, за исключением того, что класс CustomThing является дочерним классом DaddyCustomThing. CustomThing создается как:

    DaddyCustomThing thing = new CustomThing();
    

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

PS. Цель этого состоит в том, чтобы лучше понять JComponent и исправить мой университетский проект с полученными знаниями.

1 Ответ

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

Все обращения к компоненту пользовательского интерфейса должны выполняться в «Потоке диспетчеризации событий» (EDT), поэтому вы можете проверить SwingUtilities.invokeLater() et.al. :

final String newVal = "toto";
SwingUtilities.invokeLater(new Runnable() {
    @Override public void run() {
        myLabel.setText(newVal);
    }
});

Обратите внимание на модификатор final для значения, которое вы хотите установить, поскольку создается подкласс.

Возможно, у вас есть лучшие способы сделать это с помощью лямбды в Java 8, но идея остается прежней.

...