gpt4 book ai didi

java - JTabbedPane 问题 : how to find and track existing JTabbedPane's tab

转载 作者:行者123 更新时间:2023-12-01 18:59:04 24 4
gpt4 key购买 nike

我有一个开源应用程序,它使用 JTabbedPane 来显示其内容。看这个截图:

http://i46.tinypic.com/4rrs6c.jpg

主要内容有一个JSplitPane,左侧是TreeMenu对象,右侧是JTabbedPane对象。

当我从左侧面板中单击菜单时,它将使用 JTabbedPane.addTab() 方法在 JTabbedPane 中显示菜单内容:

tabbedPane.addTab(menu.getTitle(), menu.getAPanel());

我需要知道如何执行此操作:当我单击已打开关联选项卡的菜单时,它不会添加新选项卡,而是应将焦点放在已打开的选项卡上。

例如,您可以在屏幕截图中看到,我已经打开了成本类型选项卡。现在,如果我再次单击成本类型菜单,它应该将焦点带到成本类型选项卡,而不是添加新的成本类型选项卡。

菜单本身有一个唯一的 id 字段 (menu.getId())。然而,每次我单击菜单时,menu.getAPanel() 总是返回一个新的 APanel 实例。这意味着,如果我单击成本类型菜单两次,第一次单击和第二次单击从 menu.getAPanel() 返回的 APanel 永远不会是同一个实例。

有人可以帮忙吗?

更新:
好吧,看来这个问题让其他人感到困惑,老实说,我不是以英语为母语的人,这就是为什么我很难解释我的问题,而且无论如何我都找到了解决方案(感谢 MadProgrammer),所以我打算删除这个问题,因为我认为这不会再给其他人带来好处,但为了尊重 MadProgrammer,我会将这个问题保留两天,让他有机会提交他的答案并获得他应有的声誉。

仅供有点好奇的人:
此案与my previous question有关。在原始源代码中,当单击菜单时,它实际上会显示一个弹出窗口。我试图将流程更改为:单击菜单时,隐藏弹出窗口,并获取弹出窗口的内容面板(APanel)并将其传输到 JTabbedPane 作为选项卡的组件。

最佳答案

您的菜单已包含您需要的所有信息。这是一个快速模拟:

final JTabbedPane tabbedPane = new JTabbedPane();
final JComboBox items = new JComboBox(new Object[] {
new MyMenu("one"), new MyMenu("other"), new MyMenu("got it?")
});
Action action = new AbstractAction("showInTab") {

@Override
public void actionPerformed(ActionEvent e) {
MyMenu selected = (MyMenu) items.getSelectedItem();
int index = tabbedPane.indexOfComponent(selected.getMenuPanel());
if (index < 0) {
tabbedPane.addTab(selected.getName(), selected.getMenuPanel());
} else {
tabbedPane.setSelectedIndex(index);
}
}
};
items.setSelectedIndex(-1);
items.setAction(action);

编辑

这些陈述(在问题中):

it will display the menu contents in JTabbedPane by using tabbedPane.addTab(menu.getTitle(), menu.getAPanel());

并在评论中:

That's why in my very original question (before I edited many times), I stated that I can't use indexOfComponent directly

相互矛盾,如下断言成立:

int old = tabbedPane.getTabCount(); 
tabbedPane.addTab(somename, myTabContent)
assertEquals(old, tabbedPane.indexOfComponent(myTabContent));

清理其中之一;-)

关于java - JTabbedPane 问题 : how to find and track existing JTabbedPane's tab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12950013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com