我像这样在Java框架中初始化JLabel:
contentPane.add(myLabel, cc.xywh(1, 1, 31, 6, CellConstraints.DEFAULT, CellConstraints.BOTTOM));
但是在显示JFrame之前,我做了一个小小的条件,如果返回true,我想将myLabel设置为DEFAULT而不是BOTTOM,但是除了重新定义它,我还是找不到:
contentPane.add(myLabel, cc.xywh(1, 1, 31, 6));
那么,有没有更好的方法来编辑垂直位置属性?
最佳答案
假设您正在使用jgoodies FormLayout
,则在重用CellConstraints
实例时会受到一些限制。从文档和示例中可以看出,每个组件都已添加到面板中,并且复制了CellConstraints
实例。此外,当尝试收集当前组件的约束时,将返回CellConstraints
的副本。但是,您确实有一个选择:您可以复制CellConstraints
的副本,修改公共vAlign
实例var,然后使用此更新的约束集在setConstraints
上调用FormLayout
。
FormLayout layout = (FormLayout)contentPane.getLayout();
cc = layout.getConstraints(myLabel);
cc.vAlign = CellConstraints.DEFAULT;
layout.setConstraints(myLabel, cc);
它比您提供的简单重新添加要冗长一些,但是它消除了在原始实例中维护幻数(1,1,31,6)的需要。