我有一个使用 JTabbedPane 来显示其内容的开源应用程序。看这个截图:
主要内容有一个 JSplitPane,左侧是 TreeMenu 对象,右侧是 JTabbedPane 对象。
当我从左侧面板单击菜单时,它将使用 JTabbedPane.addTab() 方法在 JTabbedPane 中显示菜单内容:
tabbedPane.addTab(menu.getTitle(), menu.getAPanel());
我需要知道如何执行此操作:当我单击已打开关联选项卡的菜单时,它不会添加新选项卡,而是应该将焦点放在已打开的选项卡上。
例如,您可以在屏幕截图中看到,我已经打开了成本类型选项卡。现在,如果我再次单击“成本类型”菜单,它应该将焦点带到“成本类型”选项卡,而不是添加新的“成本类型”选项卡。
菜单本身有一个唯一的 id 字段 (menu.getId())。但是,每次我单击菜单时,menu.getAPanel() 总是返回一个新的 APanel 实例。这意味着如果我两次单击“成本类型”菜单,则第一次单击和第二次单击从 menu.getAPanel() 返回的 APanel 将永远不会是同一个实例。
任何人都可以帮忙吗?
更新:
好吧,似乎这个问题让其他人感到困惑,老实说,我不是以英语为母语的人,这就是为什么我很难解释我的问题并且我还是找到了解决方案(感谢 MadProgrammer),所以我'我打算删除这个问题,因为我认为它不会再使其他人受益,但为了向 MadProgrammer 致敬,我将把这个问题开放两天,让他有机会提交答案并获得他应得的声誉。
只是有点好奇:
这个案例与我之前的问题有关。在原始源代码中,当单击菜单时,它实际上会显示一个弹出窗口。我正在尝试将流程更改为:单击菜单时,弹出窗口被隐藏,并且弹出窗口的内容面板(APanel)被提取并作为选项卡的组件传输到 JTabbedPane 中。