假设我有一个带有 ChangeListener 的 JTabbedPane
JTabbedPane tabbedPane = new JTabbedPane();
// Add few tabs
.....
.....
tabbedPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent changeEvent) {
// How to determine if the changeEvent was fired because of a tab remove/add ?
}
});
我正在某处做一个
tabbedPane.removeTabAt(2);
还有别的地方
tabbedPane.add(panel, 0);
ChangeListener 现在应该被触发,是否有任何方法可以在监听器中确定它是否由于选项卡删除/添加而被调用?
编辑:我基本上只是在用户在选项卡之间切换而不是在添加或删除时尝试执行一些操作。
最佳答案
如果我没记错的话,JTabbedPane 将在添加新选项卡时触发 componentAdded()
事件(在 Container 中定义),如果添加选项卡则触发 componentRemoved()
事件已删除。
您应该能够通过注册 ContainerListener 来监听标签页的添加或删除。
stateChanged()
事件只是添加的副作用,因为 JTabbedPanel 会自动切换到新选项卡。
关于Java Swing - 知道选项卡是否已在 ChangeListener 中删除/添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12036355/