java swing JTabbedPane StateChangeEvent

java swing JTabbedPane StateChangeEvent,java,swing,jtabbedpane,Java,Swing,Jtabbedpane,我已将更改侦听器添加到JTabbedPane stateChanged应仅处理选项卡中的更改 i、 e当我从index1切换到index2而不是其他状态更改时 i、 e我不希望调用此状态侦听器 关于以下方法调用 jTabbedPane.removeTabAt(index) or this.tabbedPane.insertTab(tabTitle, null, jPanel,null,this.index); jTabbedPane.setSelectedInde

我已将更改侦听器添加到JTabbedPane stateChanged应仅处理选项卡中的更改 i、 e当我从index1切换到index2而不是其他状态更改时

i、 e我不希望调用此状态侦听器 关于以下方法调用

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

从你的问题中不太清楚你到底想要什么,我认为你在寻找:

      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
        ...  
    }
} 

我有3个选项卡。当我在选项卡3中并选择tab1时,stateChaange会被调用。当我调用tabbedPane.removeTabAt(1)时,它也会被调用;我不希望在调用removeTabAt(1)时调用它,它应该仅在我选中选项卡时调用。如果当前选中了要删除的
选项卡
,则它不会调用。我希望避免在以下情况下调用stateChanged方法(选项卡编号更改除外):a)jTabbedPane.setSelectedIndex(索引);b) jTabbedPane.removeTabAt(index)c)this.tabbedPane.insertTab(tabTitle,null,jPanel,null,this.index);d) 获取标题(索引)