簡體   English   中英

為什么在調用setSelectedIndex(0)之后沒有自動觸發itemListener?

[英]Why the itemListener not automatically triggered after setSelectedIndex(0) is called?

cbTexture.setSelectedIndex(0); 在構造函數的末尾被調用,但是它並不能自動地在其后選擇子紋理。 為什么?

  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);
    }

您必須在事件處理程序類之外進行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);
}

默認情況下,由於該setupSubTexture();默認情況下已經選擇了下一個第一個元素中的問題setupSubTexture(); 調用cbTexture.setSelectedIndex(0);時未執行該方法cbTexture.setSelectedIndex(0); 嘗試cbTexture.setSelectedIndex(1); 您會看到它有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM