2013-11-23 54 views
0

cbTexture.setSelectedIndex(0);在構造函數的末尾被調用 ,但它並不幫助 在它之後自動選擇子文本 。爲什麼?爲什麼在調用setSelectedIndex(0)之後itemListener不會自動觸發?

public class TradeInDialog extends JDialog { 

    public TradeInDialog(Database _db) throws SQLException 
    { 
     ....  
     setupTexture(); 

     cbTexture.addItemListener(new ItemListener() { 

      @Override 
      public void itemStateChanged(ItemEvent e) { 

       if(e.getStateChange() == ItemEvent.SELECTED) { 
        selectedTexture = cbTexture.getSelectedIndex()+1; 
        setupSubTexture(); 
      } 
     }); 
      ....  

     cbTexture.setSelectedIndex(0); 
    } 
+0

爲了更好地幫助更快,發佈[SSCCE](http://sscce.org/)。 –

+0

什麼是cbTexture類? – alex2410

回答

1

你必須做出setupSubTexture方法的第一次調用的事件處理程序類的外面,所以你的代碼必須是這樣的:

公共類TradeInDialog擴展的JDialog {

public TradeInDialog(Database _db) throws SQLException 
{ 
    selectedTexture = 1; 
    setupSubTexture(); 
    setupTexture(); 

    cbTexture.addItemListener(new ItemListener() { 

     public void itemStateChanged(ItemEvent e) { 

      if(e.getStateChange() == ItemEvent.SELECTED) { 
       selectedTexture = cbTexture.getSelectedIndex()+1; 
       setupSubTexture(); 
     } 
    }); 

    cbTexture.setSelectedIndex(0); 
} 
0

你在明年的第一個元素的問題是選擇已經作爲默認,因爲setupSubTexture();方法,當你調用cbTexture.setSelectedIndex(0);不執行的。嘗試cbTexture.setSelectedIndex(1);,你會發現它的工作原理。

+0

是的,亞歷克斯和比拉是正確的。非常感謝! – user3024062

相關問題