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

标签 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 ?
  }
});

我正在某处做一个

tabbedPane.removeTabAt(2);

还有别的地方

tabbedPane.add(panel, 0);

ChangeListener 现在应该被触发,是否有任何方法可以在监听器中确定它是否由于选项卡删除/添加而被调用?

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

最佳答案

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

您应该能够通过注册 ContainerListener 来监听标签页的添加或删除。

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

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

关于Java Swing - 知道选项卡是否已在 ChangeListener 中删除/添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12036355/

相关文章:

java - 如何使用 JTabbedPane 将多个 JPanel (3) 放入一个 JPanel 中?

java - JTabbedPane - 未创建内容

java - 删除以 "."android开头的文件夹

java - kotlin写的接口(interface)为什么一定要实现接口(interface)中的具体方法

java - 在 Java GUI 中绘制 JButton[][] 网格

java - 更新 JList 模型导致 StackOverflowError

java - JFrame getLocation 和 setLocation 处理系统边界的方式不同

java - setVisible(true) 之后的 JTabbedPane.setBackgroundAt(index, Color) 没有效果

java - 我应该使用字节流还是字符流来处理 HTTP 消息?

java - 解码时,目标 Java 对象中的 MOXy 字段顺序很重要