在调用JTabbedPane.removeAll()之后,JTabbedPane仍有x个选项卡?

the*_*e19 2 java swing jtabbedpane

在我JTabbedPane,我正在以两种不同的方式删除标签:

tabbedPane.remove(index)
Run Code Online (Sandbox Code Playgroud)

tabbedPane.removeAll()
Run Code Online (Sandbox Code Playgroud)

两者在关闭标签方面都很好.但是,我有一个更改侦听器,TabbedPane它会调用另一个模块来报告选项卡更改.这就是问题所在.

使用时添加和删除选项卡时remove(index),stateChanged()方法中的源TabbedPane在检查时包含正确数量的选项卡tabbedPane.getTabCount().

但是,在调用tabbedPane.getTabCount()之后tabbedPane.removeAll(),计数仍然是紧接在之前的计数removeAll().

有没有人有什么建议?

Mic*_*ers 9

看完源代码后,我看到发生了什么.

JTabbedPaneChangeEvents更改所选选项卡时触发.但要删除所有选项卡,它首先将选定的选项卡设置为-1,然后删除所有选项卡.因此,当ChangeListener捕获事件时,所有选项卡仍然存在.

如果你想知道任何时候的标签数量,我担心你必须自己迭代标签并逐个删除它们.

while (myTabbedPane.getTabCount() > 0)
    myTabbedPane.remove(0);
Run Code Online (Sandbox Code Playgroud)