初始化后如何重置JLabel约束?

时间:2010-06-20 10:01:33

标签: java swing constraints reset jlabel

我在Java框架中初始化一个JLabel,如下所示:

contentPane.add(myLabel, cc.xywh(1, 1, 31, 6, CellConstraints.DEFAULT, CellConstraints.BOTTOM));

但是在显示JFrame之前我做了一个小的条件if if返回true我想设置myLabel设置为DEFAULT而不是BOTTOM,但我无论如何都找不到,除非再次重新定义它:

contentPane.add(myLabel, cc.xywh(1, 1, 31, 6));

那么有更好的方法来编辑垂直位置属性吗?

1 个答案:

答案 0 :(得分:1)

假设您使用的是jgoodies FormLayout,您在重用CellConstraints个实例时受到一定限制。从文档和示例中可以看出,每个组件都添加到面板中,并复制了CellConstraints个实例。此外,在尝试收集当前组件的约束时,将返回CellConstraints副本。但是,您有一个选项:您可以获取CellConstraints的副本,修改公开的vAlign实例变量,然后使用此更新的约束调用setConstraints上的FormLayout集。

FormLayout layout = (FormLayout)contentPane.getLayout(); 
cc = layout.getConstraints(myLabel);
cc.vAlign = CellConstraints.DEFAULT;
layout.setConstraints(myLabel, cc);

它比您提供的简单重新添加更加冗长,但它不需要在原始实例中维护幻数(1,1,31,6)。