java swing JTabbedPane StateChangeEvent
我已将更改侦听器添加到JTabbedPane stateChanged应仅处理选项卡中的更改 i、 e当我从index1切换到index2而不是其他状态更改时 i、 e我不希望调用此状态侦听器 关于以下方法调用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.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) 获取标题(索引)