Как обновить JTextArea в Java Swing?

У меня есть 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();
    } 
}

=====================ОТРЕДАКТИРОВАНО============================ ===============

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


person Yatendra    schedule 20.01.2010    source источник
comment
Вдали от вопроса: я очень надеюсь, что в вашем реальном коде разработки переменные называются по-другому.   -  person Mnementh    schedule 20.01.2010
comment
К проблеме напрямую: можете ли вы проверить, что этот код вызывается, если вы выбираете новый элемент?   -  person Mnementh    schedule 20.01.2010
comment
Таким образом, фактически выполняется другая функция, которую выполняет метод. Так что мы должны исследовать дальше. Код защищен предложением if. Элемент != null или задан по-другому: введена ли ветвь if?   -  person Mnementh    schedule 20.01.2010
comment
Да, введена ветвь if, и она также выполняет строку, которая устанавливает текстовое поле, но не отражает никаких изменений. Это странно и для меня. Я работал с подобными графическими интерфейсами в разное время, но со мной такого никогда не случалось.   -  person Yatendra    schedule 20.01.2010
comment
Странный. Другая идея может заключаться в том, что jTextArea11 не указывает на рассматриваемую TextArea. Возможно, это неправильная переменная или переменная позже переназначается со ссылкой на другую TextArea. Кроме того, на данный момент у меня нет вариантов отладки.   -  person Mnementh    schedule 20.01.2010


Ответы (2)


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

person Chad Okere    schedule 20.01.2010

In the code shown your method is named as jComboBox18ItemStateChanged. Are you sure this method is being called. The ItemListener for a JComboBox should implement the interface ItemListener which declares that the subclasses should implement the below method.

void itemStateChanged(ItemEvent e);

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

РЕДАКТИРОВАТЬ:
После прочтения вашего редактирования и комментариев друг друга я могу подумать о следующем: у вас есть прослушиватель, который запускается при обновлении текстовой области и, вероятно, отменяет изменения, сделанные в прослушивателе JComboBox.

person sateesh    schedule 20.01.2010