Friday, April 13, 2007

SpringLayout

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SpringLayout;
import javax.swing.Spring;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;

public class TrySpringLayout{
static JFrame win = new JFrame("This is a Spring Layout");

public static void main(String[] args){
TrySpringLayout springlayout = new TrySpringLayout();
Toolkit toolkit = win.getToolkit(); //get toolkit window
Dimension wndSize = toolkit.getScreenSize(); //Get screen size

//set the position to scree center and size to half screen size
win.setBounds(wndSize.width/4, wndSize.height/4, wndSize.width/2, wndSize.height/2); //position,size
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.pack();
}

public TrySpringLayout(){
win.setVisible(true);

SpringLayout layout = new SpringLayout(); //Create a layout manager
Container content = win.getContentPane(); //Get the content pane
content.setLayout(layout);

JButton[] buttons = new JButton[6]; //Array to store buttons
for (int i=0; i< buttons.length; i++){
buttons[i] = new JButton("Press" + (i+1));
content.add(buttons[i]); //add a button to content pane
} // end for

Spring xSpring = Spring.constant(5,15,25); //x constraint for 1st button
Spring ySpring = Spring.constant(10,30,50); // y constant for first button
Spring wSpring = Spring.constant(30,80,130); // width constraint for buttons

//connect x,y for first button to left anf top of container by springs
SpringLayout.Constraints buttonConstr = layout.getConstraints(buttons[0]);
buttonConstr.setX(xSpring);
buttonConstr.setY(ySpring);

//set width and heiht of buttons and hook buttons together
for (int i=0; i buttonConstr = layout.getConstraints(buttons[i]);
buttonConstr.setHeight(ySpring); //Set the button height constraint
buttonConstr.setWidth(wSpring); // and its width constrainy

if (i>0){ // for buttons after the first
//tie W and N edges to E N of predecessor
layout.putConstraint(SpringLayout.WEST,buttons[i], xSpring,SpringLayout.EAST,buttons[i-1]);
layout.putConstraint(SpringLayout.NORTH,buttons[i], ySpring,SpringLayout.SOUTH,buttons[i-1]);
}
}

//relating the size of the window to the springs
SpringLayout.Constraints constr = layout.getConstraints(content);
constr.setConstraint(SpringLayout.EAST,Spring.sum(buttonConstr.getConstraint(SpringLayout.EAST),Spring.constant(15)));
constr.setConstraint(SpringLayout.SOUTH,Spring.sum(buttonConstr.getConstraint(SpringLayout.SOUTH),Spring.constant(10)));

}
}

No comments: