我很难弄清楚这个。

情况并不难想象,所以我希望我可以在没有示例代码的情况下发布此信息。我的jpanel带有cardlayout。该面板包含其他几个面板作为单个选项卡。我要实现的目标是创建一个将使主面板显示最后打开的选项卡(显示当前的标签的标签)。我一开始没什么大不了的。

因此,我首先要考虑如何获取当前可见标签(面板),并发现在面板中没有本机方法,或者更确切地说是cardlayout,仅包含first(),last(),next(),next()和上一个()())。这对我没有用。

然后,我认为也许要实现我的目标,我可能会浏览主面板的所有组件,并测试哪个是可见的,这将是当前的。我发现它有点复杂,很好,但是如果我没有卡片名称可以拨打cardlayout方法显示(父母,名称),该如何通过cardlayout进行此面板表演?

在这一点上,我不知道。我一直在通过互联网进行搜索,但还没有找到解决方案,只有很少有人试图弄清楚类似的东西。因此,我希望有人已经讨论了这个问题的话题:-)

感谢您的建议。

此致

马丁S.

有帮助吗?

解决方案

这提出了您首先如何到达当前卡的问题。如果您使用过 next() 要进入当前卡,然后 previous() 会让您获得上一张卡,反之亦然。如果您使用 first() 或者 last(), ,那你就不幸了。

当然,您总是可以复制 CardLayout 为了实现您的目标:如果您维护组件名称的数组(每当您致电时进行更新 addLayoutComponent)以及以前的索引(并使用 next, previous 和其他呼叫),然后您可以查找上一个组件的名称并使用 show 显示上一张卡。


更新: 由于您知道标签名称,因此您可以维护上一个选项卡名称:

String prevTab, curTab;

public void showTab(String newTab) {
  prevTab = curTab;
  curTab = newTab;
  layout.show(parent, curTab);
}

public void goBack() {
  layout.show(parent, prevTab);
}

其他提示

您可以创建地图对象映射。并将面板和名称添加到卡片布局和地图中。之后,如果您具有先前显示的jpanel,则可以通过map.get(jpanel p)从地图上获得其'名称。为了在此刻查找JPANEL可见的内容,您需要在每个Jpanel中添加ComponentListener。并使其更改component -Hidden事件的某些静态变量(例如静态JPANEL PREV_SHOWN)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top