我像这样在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)的需要。

08-04 19:31