Как обновить JTextArea в Java Swing? - PullRequest
2 голосов
/ 20 января 2010

У меня есть JComboBox с именем "jComboBox18" и JTextArea "jTextArea11". Теперь я хочу, чтобы каждый раз, когда элемент выбирался из поля со списком «jComboBox18», его соответствующее описание отображалось в текстовой области «jTextArea11».

Я добавил соответствующего слушателя в JComboBox, но JTextArea не показывает никакого текста. Код, который я написал, выглядит следующим образом:

private void jComboBox18ItemStateChanged(java.awt.event.ItemEvent evt) {

    Object item = jComboBox18.getSelectedItem();

    if(item != null) {
        ems.logic.Process selectedProcess = (ems.logic.Process)item;

        jTextArea11.setText(selectedProcess.getProcessDescription());
        jTextArea11.updateUI();
        jTextArea11.revalidate();
        jTextArea11.validate();
    } 
}

===================== EDITED ========================= ==================

Метод вызывается наверняка. Я меняю состояние еще одного комбобокса который также записывается в этом методе, и его состояние успешно изменяется всякий раз, когда элемент выбирается из «jComboBox18»

Ответы [ 2 ]

2 голосов
/ 20 января 2010

Я думаю, что это должно сработать. На самом деле вам нужен только вызов setText (). Я предполагаю, что по какой-то причине ваша функция не вызывается. Установите точку останова в своем коде и убедитесь, что он вызывается.

0 голосов
/ 20 января 2010

В показанном коде ваш метод назван jComboBox18ItemStateChanged. Вы уверены, что этот метод вызывается. ItemListener для JComboBox должен реализовывать интерфейс ItemListener , который объявляет, что подклассы должны реализовывать метод ниже. </p> <pre><code>void itemStateChanged(ItemEvent e);

Как вы добавляете экземпляр ItemListener в свой JComboBox?

EDIT:
После прочтения ваших правок и комментариев еще одна возможность, о которой я могу подумать: у вас есть прослушиватель, который запускается при обновлении текстовой области и, вероятно, отменяет изменения, сделанные в слушателе JComboBox.

...