Java 在运行时更改FormLayout对齐方式

Java 在运行时更改FormLayout对齐方式,java,swing,jgoodies,form-layout,Java,Swing,Jgoodies,Form Layout,是否有一种方法可以使用JGoodies FormLayout在设置组件后更改其对齐方式 比如说, CellConstraints cc = new CellCosntraints(); panel.add(component,cc.xy(1,1,CellConstraints.DEFAULT,CellConstraints.FILL)); 如果我想将组件更改为具有默认的行约束而不是填充,是否有一种方法可以在不删除和重新添加组件的情况下进行更改?看起来您可以: FormLayout l = ne

是否有一种方法可以使用JGoodies FormLayout在设置组件后更改其对齐方式

比如说,

CellConstraints cc = new CellCosntraints();
panel.add(component,cc.xy(1,1,CellConstraints.DEFAULT,CellConstraints.FILL));
如果我想将
组件
更改为具有默认的行约束而不是填充,是否有一种方法可以在不删除和重新添加组件的情况下进行更改?

看起来您可以:

FormLayout l = new FormLayout();
...
l.setContraints(component, newconstraints);
然后可能对容器执行
revalidate()
,以更新内容。

有两种方法(@Jim+1表示正确的方向)

1) 填充容器内的可用尺寸标注,而不调整容器的大小

revalidate() //covered validate()
repaint() // required in some cases for JLabel, JTextComponents, JScrollPane ...
pack();
2) 使用“调整容器大小”填充容器内的可用尺寸标注

revalidate() //covered validate()
repaint() // required in some cases for JLabel, JTextComponents, JScrollPane ...
pack();

啊,我想我不会用它,因为它需要一个全新的单元格约束对象。我将修改当前组件,然后为该组件重置它。我很快会尝试一下,谢谢。代码克隆了约束对象,所以应该是安全的。你确定吗?我不认为它真的克隆了这个物体。但我仍然认为这会起作用,因为您可以对多个组件重用cellconstraints对象。我链接了源代码,它显示它确实克隆了()约束。虽然是真的,但它与问题无关;-)