我已向 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);
最佳答案
从你的问题中并不清楚你到底想要什么,我认为你正在寻找:
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
...
}
}
关于java swing JTabbedPane stateChangedEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11952145/