tags:

views:

398

answers:

3

In .net there is a control called anchoring that is used to resize controls dynamically with the form. When a control is anchored to a form and the form is resized, the control maintains the distance between the control and the anchor positions.

My question is that is there any controls in java that does same functionality as anchoring in .net.
As for an example i have selected a textfield and put it on the panel and resized it properly. Now when i change the size of window(JFrame) or maximize the window the textfield will not maintain the same distance as it was previously. I have been using netbeans and i havent found any properties in pallete manager that answers my question. Please explain me with an example or some links.

A: 

Netbeans has inbuilt support for designing GUIs using the Matisse GUI builder. This is the closest you'll get to the drag & drop style form design that's available with environments such as VB.

There is a flash demo here.

(Personally I'm not a huge fan of this approach though as it autogenerates a lot of code that quickly becomes unmaintainable, especially if not everyone in your development team is using Netbeans.)

Adamski
A: 

If you've only got a single control then using java.awt.BorderLayout and adding your control with BorderLayout.CENTER is your best bet.

If you've multiple controls then you need to use java.awt.GridBagLayout.

You need to set the following:

gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
gridBagConstraints.fill = GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1;
gridBagConstraints.weighty = 1;

when adding the control you want to re-size.

There's a tutorial about it here:

http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html

Nick Holt
+2  A: 

Java Swing uses Layout Managers to manage de size and postion of visual components. This is the official java tutorial on how to use this Layout managers:

http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

And there is a brief description of the most common layout managers

FlowLayout (default): it disposes the components left to right and up to down.

BorderLayout: it divides the container in NORTH, SOUTH, WEST, EAST center CENTER. Only one component by position. Components on border expands and the center component uses the space avaiable

GridLayout: you initialice the manager indicating how many rows and cols the grid is going to have. Each cell has same size and you start adding component on the top left cell.

GridBagLayout: the MOST fine grained layout manager, you can do anything with this, but is a bit complicated, see the java documentation for it.

NullLayout (when you nullify the container's layout manayer): no layout manager, components uses the location and size properties to show on components.

And of course, containers inside in other containers can use a different layout manager than their parent. Combining layout managers is a difficult art to learn.

Telcontar