我在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));
那么有更好的方法来编辑垂直位置属性吗?
答案 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)。