2016-07-22 42 views
0

我是Java Swing的新手。請幫助我如何達到以下要求。以編程方式設置JComboBox索引時觸發ItemListener

點擊一個按鈕我必須打開一個對話框。我的對話框有2 JComboBox。我在JComboBox1上編寫了ItemListner以填充JComboBox2中的值。

我現在需要的是在對話框的載入中我想手動設置一個項目在JComboBox1ItemListner應該爲JComboBox2射擊。

我在打開對話框的方法中使用了下面的代碼。但ItemListener在不觸發

JComboBox jComboBox1; 

populateJComboBox(); // Method to populate JComboBox1 

jComboBox1.setSelectedIndex(0); 

ItemListener il = new ItemListener() { 
    public void itemStateChanged(ItemEvent ie) { 
    populateJComboBOx2(); 
    } 
}; 
jComboBox1.addItemListener(il); 
+1

1)爲了更好地幫助更快,發佈[MCVE]或[短,自成一體,正確示例](http://www.sscce.org/)。 2)請學習常用的Java命名規則(命名約定 - 例如'EachWordUpperCaseClass','firstWordLowerCaseMethod()','firstWordLowerCaseAttribute',除非它是'UPPER_CASE_CONSTANT')並且一致地使用它。 3)參見[編輯問題]時留下的註釋(http://stackoverflow.com/posts/38522124/revisions)。 –

回答

2

而不是ItemListener實施ActionListener

public class ComboBoxDemo implements ActionListener { 
... 
    jComboBox1.addActionListener(this) { 
... 
public void actionPerformed(ActionEvent e) { 
    if(e.getSource().equals(jComboBox1)){ 
     populateJComboBox2(); 
    } 
} 
} 

Java Docs Link for more Information

+0

jComboBox1.addActionListener(新的ActionListener(){ 公共無效的actionPerformed(ActionEvent的發送){ 如果(e.getSource()等於(jComboBox1)){ populateJComboBox2();} } }); - 試過這個,但沒有工作。我不確定如何在評論中格式化代碼。非常抱歉,無法格式化 – pankti

+0

1.您是否重新驗證並重新繪製populateJComboBox2中的面板? 2.將一些輸出添加到ActionListener Methode中,以便確認事件是否觸發或 – mayha