2010-06-20 5 views
0

Я инициализировать JLabel в Java кадре, как это:Как сбросить ограничения JLabel после его инициализации?

contentPane.add(myLabel, cc.xywh(1, 1, 31, 6, CellConstraints.DEFAULT, CellConstraints.BOTTOM)); 

Но перед показом JFrame я сделать небольшое состояние, которое, если возвращает истину я хочу, чтобы установить MyLabel быть установлен по умолчанию вместо ДНА, но я могу «т найти в любом случае, кроме переосмысление его снова, как это:

contentPane.add(myLabel, cc.xywh(1, 1, 31, 6)); 

Так есть лучший способ просто изменить вертикальное расположение свойства?

+0

Какова ваша компоновка на панели содержимого? – Istao

ответ

1

Предполагая, что вы используете jgoodies FormLayout, вы несколько ограничены в повторном использовании своих экземпляров CellConstraints. Из документации и примеров видно, что каждый компонент добавлен в панель и копируются экземпляры CellConstraints. Кроме того, при попытке собрать ограничения для текущего компонента возвращается копия из CellConstraints. Однако у вас есть возможность: вы можете взять эту копию CellConstraints, изменить публикацию экземпляра public vAlign, а затем вызвать setConstraints на FormLayout с этим обновленным набором ограничений.

FormLayout layout = (FormLayout)contentPane.getLayout(); 
cc = layout.getConstraints(myLabel); 
cc.vAlign = CellConstraints.DEFAULT; 
layout.setConstraints(myLabel, cc); 

Это немного более многословным, чем просто повторно добавить, что вы предоставили, но избавляет от необходимости поддерживать магические числа (1,1,31,6) в оригинальном экземпляре.

+0

Точно то, что я пытался сделать ... Вместо того, чтобы ограничиваться ячейками координат (1,1,31,6) ... Спасибо большое :) – Brad

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