java - GridBagLayout 读取组件

标签 java swing user-interface jlabel gridbaglayout

我创建了一个大小为 n 的 JLabelArrayList,并将 JLabel 放置在 JInternalFrame 中:在 GridBagLayout 管理器的帮助下,网格符合我的目的。

现在我想替换其中一些 JLabel 甚至删除它们。 删除第 k 个 JLabel 确实可以很好地使用

innerframe.remove( ListOfLabels.get(k) );
ListOfLabels.remove(k);

(顺便说一句,如果我只使用其中一个,JLabel 不会从内部框架中删除 - 为什么?如果我删除其他对象,例如 Checkboxe s,仅使用 innerframe.remove(ListOfCBoxes.get(k));)

就足够了

当我将 JLabel 放置在周围的 JFrame 内时,即使其他 JLabel 也停留在其位置,但也不起作用。 但编辑内容后我无法读取 JLabel 。我正在努力

//Initialization 

ArrayList<JLabel> ListOfLabels = new ArrayList<JLabel>(n);
GridBagLayout GridBLayout_innerframe = new GridBagLayout();
GridBagConstraints GridBConstraints_innerframe = new GridBagConstraints();
JInternalFrame innerframe = new JInternalFrame();
innerframe.setLayout(GridBLayout_innerframe);

// Creating components of innerframe, arranging them in a grid and adding them. 
// This seems to work.

innerframe.remove( ListOfLabels.get(k) );
ListOfLabels.remove(k);

labelk = new JLabel("New content");
ListOfLabels.add(labelk);
GridBConstraints_innerframe.gridy = k ;
GridBLayout_innerframe.setConstraints(ListOfLabels.get(n-1), GridBConstraints_innerframe) ;
innerframe.add(ListOfLabels.get(n-1)) ;

当然,之前第 k 个 JLabel 使用了相同的约束,但我没有 删除此信息。我希望我能覆盖它。

但是结果是我删除的 JLabel 仍然被删除,而我想要删除的 JLabel 仍然被删除 添加不出现。即使在“刷新”窗口之后也是如此。 Eclipse 也没有错误消息。

有人可以找到我的错误并解释如何将组件重新添加到希望已经存在的网格中吗:/

最佳答案

您正在删除JLabel,但没有说明您执行此操作的Component。当Component已经可见时,您需要在添加/删除Component之后立即调用revalidate()方法。

因此,如果 innerframe 可见并且您调用了 innerframe.remove(...),则需要调用:

innerframe.revalaidate();

然后 innerframe 注意到添加或删除的 Component 并重新分配现在位于 Component 中的 Component (调用LayoutManager,重新绘制,...)。

关于java - GridBagLayout 读取组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25502796/

相关文章:

java - 内容类型为 application/x-www-form-urlencoded 的发布请求在 Spring 中不起作用

java - 不能使用sqoop将数据表导入hbase

android - 在 Android 中的监听器之间切换

java - 如何防止多次运行同一个 JInternalFrame

design-patterns - 演示模型与被动 View

Java:JTextPane 加载不透明?

java - 复选框渲染器

java - 如何将字符串文件读入二维数组

java - JavaFX 2 提供哪些功能?与 Java Applet 或 Silverlight 等相关技术相比,其实现有多成熟?

java - 所有按钮均不显示