Re: GridBagLayout and changing constraints objects.
- From: Brandon McCombs <none@xxxxxxxx>
- Date: Mon, 26 Mar 2007 01:28:48 -0400
Daniel Pitts wrote:
Say I have the following code:
JPanel myPanel = new JPanel(new GridBagLayout());
GridBagConstraints constaints = getConstraints();
myPanel.add(new JLabel("Hello world"), constaints);
And then later (as a result of an Event), I do something like
constraints.gridx = 3;
myPanel.revalidate();
Will this have the expected effect, or do I need to remove the old
label, and re-add it with the new constraints?
You will have to remove it and re-add it. How is Java to know which Object is supposed to have the new constraint if you don't re-add the Object with that constraint? It could assume to apply that new constraint property to the only Object in a JPanel if there is only one in it but that wouldn't work for more than 1 Object in container and it isn't a good way to do it anyway. It is bad design to need to relocate/resize an Object after an event occurs. You should rethink how you are presenting the interface to the user because the user should not normally see new things appear when they do something; all the Objects in the GUI should be visible, their sizes unchanging, and the unused ones disabled until they are needed (with the enabling trigger being your event).
As it is now, the line:
myPanel.add(new JLabel("Hello world"), constaints);
isn't going to do much because you aren't defining what your constraints are although some of the properties do have default values. The default for gridx is 'relative' which may not be what you want initially.
.
- Follow-Ups:
- Re: GridBagLayout and changing constraints objects.
- From: Daniel Pitts
- Re: GridBagLayout and changing constraints objects.
- Prev by Date: Re: GridBagLayout and changing constraints objects.
- Next by Date: Re: GridBagLayout and changing constraints objects.
- Previous by thread: Re: GridBagLayout and changing constraints objects.
- Next by thread: Re: GridBagLayout and changing constraints objects.
- Index(es):