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 回答