1

JTabbedPane に変更リスナーを追加しました。stateChanged は、タブの変更のみを処理する必要があります。つまり、index1 から index2 に切り替えた場合にのみ処理し、他の stateChangedEvents では処理しません。

つまり、この状態リスナーが次のメソッド呼び出しで呼び出されることを望まない

     jTabbedPane.removeTabAt(index)
           or this.tabbedPane.insertTab(tabTitle, null, jPanel,null,this.index);
jTabbedPane.setSelectedIndex(index)

これを行う方法はありますか。

 ChangeListener changeListener=new ChangeListener()
            {
              @Override
            public void stateChanged(ChangeEvent e)
              {
              };
           }
tabbedPane.addChangeListener(changeListener);
4

1 に答える 1

0

あなたの質問から、あなたが何を望んでいるのかはあまり明確ではありません。あなたが探していると思います:

      tabbedPane.addChangeListener(new ChangeListener() {    
            @Override
            public void stateChanged(ChangeEvent e) {
                System.out.println("change"); // Or what ever you want
            }
        });

更新:これはあなたができることです、うまくいきます

public class JTabbedPaneDemo {    
    static int tabCount;
    public static void main(String[] args) {
        ...
        tabCount = tb.getTabCount(); // get total number of tabs
        tb.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                JTabbedPane jt = (JTabbedPane) e.getSource();
                if(tabCount == jt.getTabCount()){ // true if no tab is removed
                     System.out.println("change"); // Or what ever you want
                }
            }
        });
        tb.removeTabAt(0); // stateChange will be called but if will not be true
        tabCount = tb.getTabCount(); // update tabCount after tab remove
        ...  
    }
} 
于 2012-08-14T12:33:51.643 に答える