CardLayout 的替代方案不保留对所包含组件的引用

发布于 2024-12-01 15:41:06 字数 122 浏览 3 评论 0原文

我想动态替换/更改面板的内容。我知道执行此操作的“标准”方法是使用 CardLayout。

然而,大多数组件都很胖。它们是大数据表和巨大的图表。

我还有哪些其他选择(包括免费提供的第 3 方组件)?

I would like to dynamicly replace/change to contents of a panel. I know that the "standard" way of doing this is to use the CardLayout.

However, most of the Components are very fat. They are big data tables and huge diagrams.

What other options do I have (including 3rd party components available for free)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

前事休说 2024-12-08 15:41:06

您可以删除旧内容并创建新内容并重新添加新组件。然后打电话

container.revalidate(); 
container.repaint();

You can delete old content and create new and readd the new component(s). Then call

container.revalidate(); 
container.repaint();
苏大泽ㄣ 2024-12-08 15:41:06

只是不要使用布局管理器。自己烤:

// start with fat compponent 1
JPanel p = new JPanel(new BorderLayout());
FatComponent1 c1 = new FatComponent1();
p.add(c1, BorderLayout.CENTER);

// ...
// replace it e.g. after pressing a button with fat component 2
p.removeAll();
FatComponent2 c2 = new FatComponent2();
p.add(c2, BorderLayout.CENTER);

Just don't use a LayoutManager. Bake it yourself:

// start with fat compponent 1
JPanel p = new JPanel(new BorderLayout());
FatComponent1 c1 = new FatComponent1();
p.add(c1, BorderLayout.CENTER);

// ...
// replace it e.g. after pressing a button with fat component 2
p.removeAll();
FatComponent2 c2 = new FatComponent2();
p.add(c2, BorderLayout.CENTER);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文