Java Swing - 知道是否已在ChangeListener中删除/添加了选项卡

Kri*_*raj 4 java swing jtabbedpane changelistener

假设我有一个带有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 ?
  }
});
Run Code Online (Sandbox Code Playgroud)

我正在做某个地方

tabbedPane.removeTabAt(2);
Run Code Online (Sandbox Code Playgroud)

和其他地方

tabbedPane.add(panel, 0);
Run Code Online (Sandbox Code Playgroud)

ChangeListener现在应该被解雇了,有没有办法在监听器中确定是否由于选项卡删除/添加而被调用?

编辑:我基本上只是在用户在选项卡之间切换而不是在添加或删除时才尝试执行某些操作.

a_h*_*ame 7

如果我没记错的话,JTabbedPane将componentAdded()在添加新选项卡时触发事件(在Container中定义),componentRemoved()如果删除选项卡则触发事件.

您应该能够通过注册ContainerListener来监听添加或删除选项卡

http://docs.oracle.com/javase/7/docs/api/java/awt/Container.html#addContainerListener(java.awt.event.ContainerListener)

stateChanged()事件只是添加的副作用,因为JTabbedPanel会自动切换到新选项卡.