2012-03-05 5 views
4

Есть ли способ использования JGoodies FormLayout для изменения выравнивания компонента после его установки?Изменение выравнивания FormLayout во время выполнения

, например,

CellConstraints cc = new CellCosntraints(); 
panel.add(component,cc.xy(1,1,CellConstraints.DEFAULT,CellConstraints.FILL)); 

Если я хочу изменить component быть есть строки ограничение по умолчанию вместо FILL, есть способ, чтобы изменить его теперь, когда он был установлен без удаления и повторно добавление компонента?

ответ

5

Похоже, что вы можете:

FormLayout l = new FormLayout(); 
... 
l.setContraints(component, newconstraints); 

то, возможно, сделать revalidate() на контейнере, чтобы обновить вещи.

+0

Ах, я ж поскольку я думал, что не буду использовать это, потому что он требует целого нового объекта ограничений ячейки. Я просто изменю текущий, а затем сброшу его для этого компонента. Благодарю. –

+0

Код клонирует объект ограничения, поэтому он должен быть безопасным. [Источник] (http://grepcode.com/file/repo1.maven.org/maven2/com.jgoodies/forms/1.2.1/com/jgoodies/forms/layout/FormLayout.java#FormLayout.setConstraints%28java. awt.Component% 2Ccom.jgoodies.forms.layout.CellConstraints% 29) – Jim

+0

Уверены ли вы в этом? Я не думал, что это на самом деле клонирует объект. Но я все же думаю, что это сработает, поскольку вы можете повторно использовать объект cellconstraints для нескольких компонентов. –

0

есть два способа (@Jim + 1 для правильного направления)

1) заполняет доступное измерение внутри контейнера без изменения размера контейнера для

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

2) заполняет доступное измерение внутри контейнера с изменением размера для контейнера

pack(); 

this code can help you

+0

в то время как верно, это не связано с вопросом ;-) – kleopatra

 Смежные вопросы

  • Нет связанных вопросов^_^