【问题标题】:Display the first tab of a JTabbedPane显示 JTabbedPane 的第一个选项卡
【发布时间】:2011-12-13 12:53:38
【问题描述】:

我有一个 Jtabbedpane,其中包含 4 个选项卡(每个选项卡都是 Jpanel)。

当我从 netbeans 6.8 运行应用程序时,选择的选项卡将与关闭应用程序之前选择的选项卡相同。

有没有办法在我每次运行我的应用程序时选择第一个选项卡(索引 0)? 这是代码:

mainTabbedPanel = new javax.swing.JTabbedPane();
mainTabbedPanel.setName("mainTabbedPanel");
mainTabbedPanel.addTab(resourceMap.getString("panel1"), panel1);
mainTabbedPanel.addTab(resourceMap.getString("panel2"), panel2);
mainTabbedPanel.addTab(resourceMap.getString("panel3"), panel3);
mainTabbedPanel.addTab(resourceMap.getString("panel4"), panel4);

那些在 netbeans 的 private void initComponents() 方法中 并在启动时(我的应用程序的构造函数)将调用 initComponents。 我尝试在调用 initComponents() 后放置 mainTabbedPanel.setSelectedIndex(0) 但没有用。

【问题讨论】:

  • @JB_Nizet 然而,关于这个应用程序记住 JTabbedPane 状态这一事实确实有些奇怪。我想这与它的构建方式有关(即使用马蒂斯)。
  • @Riduidel 是的,你是对的。但我没有找到如何始终显示第一个选项卡。有什么建议吗?
  • 确实如此。但是,如果(现在已经死掉的)swing 应用程序框架在应用程序结束时存储了这种偏好(如帧大小和位置),我不会感到惊讶。
  • @Joe123 更新您的问题,并提供有关setSelectedIndex(0) 失败的解释(如异常堆栈跟踪、源代码......),也许我们会尝试保存这个问题。

标签: java swing netbeans-6.9 netbeans6.8 jtabbedpane


【解决方案1】:

默认情况下,将选择第一个选项卡。如果发生了除此之外的其他事情,那么某处必须有代码使用 setSelectedIndex(...) 来重置选项卡。您需要搜索生成的代码以找出它的位置并删除代码。

如果您不知道如何删除代码,那么您可以在默认代码执行后尝试重置索引。这是通过在 GUI 可见后使用 SwingUtilities.invokeLater 来完成的。您的代码将类似于:

SwingUtilities.invokeLater(new Runnable()
{
    public void run()
    {
        tabbedPane.setSelectedIndex(0);
    }
});

【讨论】:

  • @Joe123 显然它有效,就像文档可以更快地解释你一样。但是我不认为这对你有好处,因为这个问题显然存在于 StackOverflow 内存中。
  • @Riduidel,你还是不明白这个问题。默认情况下显示第一个选项卡。无需手动将索引设置为 0。因此,“阅读 API”并不是您所暗示的简单答案。我的回答给出了问题的潜在原因和解决方案。同样,如果在代码中的某处手动设置了选定的选项卡,那么代码中将选定选项卡重置为 0 的位置很重要,因此可能需要 invokeLater()。所以解决方案是什么并不明显。更好的建议是发布 SSCCE。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 2018-10-02
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
相关资源
最近更新 更多