2010-01-20 199 views
2

我有一個名爲「jComboBox18」的JComboBox和一個JTextArea「jTextArea11」。現在我希望每當從「jComboBox18」組合框中選擇一個項目時,其相應的描述就會顯示在「jTextArea11」textarea中。如何更新Java Swing中的JTextArea?

我已將適當的偵聽器添加到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」中選擇項目時它的狀態更改成功

+3

遠離問題:我真的希望在你真正的開發代碼中,變量的命名是不同的。 – Mnementh 2010-01-20 12:05:12

+0

直接問題:您是否可以驗證是否在選擇新項目時調用此代碼? – Mnementh 2010-01-20 12:15:14

+0

所以方法所做的另一個功能實際上是執行的。所以我們必須進一步調查。代碼由if子句保護。該項目!=空,或以不同的方式提問:是否輸入了if分支? – Mnementh 2010-01-20 12:38:26

回答

2

我認爲這應該有效。實際上,你應該只需要setText()調用。我的猜測是,你的功能沒有因某種原因而被調用。在代碼中放置一個斷點並確保它被調用。

0

在顯示的代碼中,您的方法被命名爲jComboBox18ItemStateChanged。你確定這個方法正在被調用。 JComboBox的ItemListener應該實現接口 ItemListener,它聲明子類應該實現下面的方法。

void itemStateChanged(ItemEvent e); 

你如何添加一個ItemListener的實例到你的JComboBox?

編輯:
閱讀你的編輯和評論之一後,我能想到的另一種可能是: 你有當textarea的被更新時被觸發,可能炎在撤消JComboBox的聽衆做了更改的偵聽器。