8.8.9 | SpringLayout |
DasSpringLayout wurde mit Java 1.4 eingeführt und ist eigentlich nur dazu gedacht, in GUI-Builder eingesetzt zu werden.
Das SpringLayout definiert die Beziehungen zwischen den Rändern der einzelnen Komponenten. Diese Abstände zwischen den Komponenten werden über Exemplare der Klasse Spring abgebildet, die die Attribute maximum, minimum, preferred und value (den aktuellen Wert) besitzt. Die Zusammenfassung der Springs werden jeweils zu einer Komponente in einem SpringLayout.Constraints-Exemplar gespeichert.Das folgende Beispiel zeigt, wie drei Buttons ausgerichtet werden, indem der Abstand zum Rand fest angegeben wird.
SpringLayout springLayout = new SpringLayout(); getContentPane().setLayout(springLayout); Spring x = Spring.constant(5); Spring y = Spring.constant(5); Spring xGes = x; JButton b1 = new JButton("A"); SpringLayout.Constraints c = springLayout.getConstraints(b1); c.setX(xGes); xGes = Spring.sum(xGes, c.getConstraint("East")); c.setY(y); getContentPane().add(b1); JButton b2 = new JButton("Button"); c = springLayout.getConstraints(b2); c.setX(xGes); xGes = Spring.sum(x, c.getConstraint("East")); c.setY(y); getContentPane().add(b2); JButton b3 = new JButton("Another Button"); c = springLayout.getConstraints(b3); c.setX(xGes); xGes = Spring.sum(x, c.getConstraint("East")); c.setY(y); getContentPane().add(b3);Startet man das Programm, so sind die Buttons nicht zu sehen, da dem Fenster keine Größe gegeben wurde. Dieses kann man über folgenden Code nachholen:
c = springLayout.getConstraints(getContentPane()); c.setConstraint("East", xGes); c.setConstraint("South", Spring.sum(y, springLayout.getConstraints(b1). getConstraint("South")));