views:

99

answers:

1

I initialize a JLabel in Java frame like this :

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

But before showing the JFrame i make a small condition which if returns true i want to set myLabel to be set to DEFAULT instead of BOTTOM, but i can't find anyway except redefining it again like this :

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

So is there a better way to just edit the vertical location property ?

+1  A: 

Assuming you are using a jgoodies FormLayout, you are somewhat restricted in the reuse of your CellConstraints instances. It appears from the documentation and examples that each component is added to the panel and the CellConstraints instances are copied. Further, when trying to gather the constraints for the current component, a copy of the CellConstraints is returned. However, you do have an option: you can take that copy of the CellConstraints, modify the public vAlign instance var and then call setConstraints on your FormLayout with this updated constraints set.

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

It is a little bit more verbose than the simple re-add that you have provided, but it removes the need to maintain the magic numbers (1,1,31,6) in your original instance.

akf
Exactly what i was trying to do ... Instead of being restricted to the cell coordinates (1,1,31,6) ... Thanks a lot :)
Brad