如何使用 BorderLayout/GroupLayout 从 JPanel 中删除特定元素?

Posted

技术标签:

【中文标题】如何使用 BorderLayout/GroupLayout 从 JPanel 中删除特定元素?【英文标题】:How to remove a specific element from a JPanel using BorderLayout/GroupLayout? 【发布时间】:2011-09-12 13:08:12 【问题描述】:

我需要删除JPanelCenter中的Component,但经过一些尝试没有成功。

我在这里尝试了这个方法:

Removing the CENTER element from a JPanel using BorderLayout

但是答案的方法会产生编译时错误:

Type mismatch: cannot convert from LayoutManager to BorderLayout

我是否解释错了答案?

此外,我也很好奇是否可以只更新 GroupLayout 中的单个组件。谁能告诉我怎么做?

编辑:@mre:这是代码:

BorderLayout layout = panel.getLayout();
panel.remove(layout.getLayoutComponent(BorderLayout.CENTER));

与链接中的基本相同。

谢谢大家!

【问题讨论】:

请提供相关代码。 您确定您的面板有 BorderLayout 吗? 【参考方案1】:

您必须将布局管理器向下转换为 BorderLayout :

BorderLayout layout = (BorderLayout) panel.getLayout();

但是如果你知道哪个组件在中心,你可以把它移除:

panel.add(myComponent, BorderLayout.CENTER);
...
panel.remove(myComponent);

【讨论】:

谢谢!我以前试过这个,我只是发现还有另一个错误让我相信这个解决方案会导致 NullPointerException。现在更好了:) p.s.第二个解决方案很棒。这也适用于 GroupLayout 吗?

以上是关于如何使用 BorderLayout/GroupLayout 从 JPanel 中删除特定元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?