Java by API/java.awt/SpringLayout
new SpringLayout()
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Spring;
import javax.swing.SpringLayout;
public class MainClass {
public static void main(String[] args) {
JFrame aWindow = new JFrame();
aWindow.setBounds(200, 200, 200, 200);
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = aWindow.getContentPane();
content.add(new SpringLayoutPanel());
aWindow.setVisible(true);
}
}
class SpringLayoutPanel extends JPanel {
public SpringLayoutPanel() {
SpringLayout layout = new SpringLayout();
setLayout(layout);
JButton[] buttons = new JButton[6];
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton("Press " + (i + 1));
add(buttons[i]);
}
Spring xSpring = Spring.constant(5, 15, 25);
Spring ySpring = Spring.constant(10, 30, 50);
Spring wSpring = Spring.constant(30, 80, 130);
SpringLayout.Constraints buttonConstr = layout.getConstraints(buttons[0]);
buttonConstr.setX(xSpring);
buttonConstr.setY(ySpring);
for (int i = 0; i < buttons.length; i++) {
buttonConstr = layout.getConstraints(buttons[i]);
buttonConstr.setHeight(ySpring);
buttonConstr.setWidth(wSpring);
if (i > 0) {
layout.putConstraint(SpringLayout.WEST, buttons[i], xSpring,
SpringLayout.EAST, buttons[i - 1]);
layout.putConstraint(SpringLayout.NORTH, buttons[i], ySpring,
SpringLayout.SOUTH, buttons[i - 1]);
}
}
SpringLayout.Constraints constr = layout.getConstraints(this);
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)));
}
}
Spring: constant(int min, int pref, int max)
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Spring;
import javax.swing.SpringLayout;
public class MainClass {
public static void main(String[] args) {
JFrame aWindow = new JFrame();
aWindow.setBounds(200, 200, 200, 200);
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = aWindow.getContentPane();
content.add(new SpringLayoutPanel());
aWindow.setVisible(true);
}
}
class SpringLayoutPanel extends JPanel {
public SpringLayoutPanel() {
SpringLayout layout = new SpringLayout();
setLayout(layout);
JButton[] buttons = new JButton[6];
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton("Press " + (i + 1));
add(buttons[i]);
}
Spring xSpring = Spring.constant(5, 15, 25);
Spring ySpring = Spring.constant(10, 30, 50);
Spring wSpring = Spring.constant(30, 80, 130);
SpringLayout.Constraints buttonConstr = layout.getConstraints(buttons[0]);
buttonConstr.setX(xSpring);
buttonConstr.setY(ySpring);
for (int i = 0; i < buttons.length; i++) {
buttonConstr = layout.getConstraints(buttons[i]);
buttonConstr.setHeight(ySpring);
buttonConstr.setWidth(wSpring);
if (i > 0) {
layout.putConstraint(SpringLayout.WEST, buttons[i], xSpring,
SpringLayout.EAST, buttons[i - 1]);
layout.putConstraint(SpringLayout.NORTH, buttons[i], ySpring,
SpringLayout.SOUTH, buttons[i - 1]);
}
}
SpringLayout.Constraints constr = layout.getConstraints(this);
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)));
}
}