【问题标题】:JTabbedPane displays wrong tab components at firstJTabbedPane 一开始显示错误的选项卡组件
【发布时间】:2013-10-18 14:34:48
【问题描述】:

我正在使用带有 3 个选项卡和 Netbeans 7.3 的 JTabbedPane。当我打开窗格时,它应该打开到第一个选项卡。但是,如果我尝试切换到第三个选项卡,则会显示第二个选项卡的组件,即使在 JTabbedPane 的 ChangeListener 中,jTabbedPane.getSelectedIndex() == 2, 也是如此。

只有当您切换到第二个选项卡然后打开第三个选项卡时,才会显示第三个选项卡的组件。之后,行为就正常了。

我能找到的最接近的是这个错误: JTabbedPane.getTabComponentAt(int) returning null

有没有人遇到过这样的事情?我通过“访问”构造函数中的第二个选项卡来解决它。

【问题讨论】:

  • 也许您正在初始化第二个选项卡构造函数中第三个选项卡上的内容或与之相关的某个侦听器。
  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing jtabbedpane


【解决方案1】:

我的症状与 OP 所描述的症状相同——来自一个 JTabbedPane 选项卡的组件正在“渗透”到另一个选项卡。虽然我不能确定这是由同一件事引起的,因为 OP 从未遵守发布 SSCCE 的请求,但我想我会发布以下内容,以防其他人将来遇到此问题。

问题的根源是我在已添加到JTabbedPane 的组件上调用setVisible()。经过长时间的搜索将我带到https://bugs.openjdk.java.net/browse/JDK-6191978,我发现了这一点。根据该错误报告,JTabbedPane 在内部使用了可见性的概念,而在外部对其进行更改会使选项卡管理器感到困惑。 JTabbedPane 中的组件永远不应该调用它们的 setVisible() 方法;相反,用户应该调用setSelectedComponent()setSelectedIndex() 以使选项卡内容出现。 (这现在记录在 JDK API 文档中,但在最初编写代码时并没有回来......)

希望这可以节省我搜索和调试的时间...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 2012-04-20
    相关资源
    最近更新 更多