如何使用 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 【问题描述】:我需要删除JPanel
的Center
中的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 提交?