2011-01-08 4 views
5

Mit Swing, was ist der beste Weg, um einige Komponenten unter einem Kontrollkästchen oder Radio-Button einrücken? Ich muss etwas im Stil von Firefox 3.6 Optionen-> Privatsphäre-Dialog machen, wo einige Checkboxen eingerückt sind unter einem "Haupt" -Kästchen. Ich kann jedes Standard-AWT/Swing-Layout einschließlich GroupLayout verwenden. Ich habe auch JGoodies FormLayout für mich verfügbar. Ich habe zuerst versucht, setLeadingColumn Offset in FormLayout zu verwenden, aber es schien, als ob es nicht gut funktionieren würde, wenn ich nicht unter einem Separator einrücken würde. Vielleicht habe ich es einfach falsch gemacht?Wie kann ich einzelne Komponenten mit Java Swing-Layouts sauber einrücken

Gibt es etwas wie die Einstellung horizontalIndent von SWT GridLayout? Das wäre perfekt.

Ich arbeite mit JDK1.6.0_23.

Antwort

2

Es gibt mehrere Möglichkeiten, dies zu tun:

  1. Stellen jeweils Komponenten Grenze: new EmptyBorder (0, 10, 0, 0).

  2. Verwenden Sie eine GridBagLayout und verwenden Sie eine Inset (0, 10, 0, 0) zum Auffüllen der linken Seite.

  3. Verwenden Sie eine GridBagLayout und lassen Sie das Haupt-Kontrollkästchen zwei Spalten, während die Unter-Kontrollkästchen versetzt werden, indem Sie sie in der rechten Spalte platzieren.

  4. Liefern Sie benutzerdefinierte Kontrollkästchensymbole, die an ihren linken Rändern etwas freien Platz haben.

usw.

Mein Rat die GridBagLayout zu lernen wäre - es etwas unhandlich ist zu verwenden, aber es gibt Ihnen so ziemlich alles, um das Layout Macht man sich wünschen kann. Der JGoodies-Stuff ist nützlich, wenn Sie ein bestimmtes automatisches Größenanpassungsverhalten für Spalten haben möchten, das Ihnen GBL nicht ohne zusätzlichen Code zur Verfügung stellt.

0

Sie sollten dies problemlos mit FormLayout erreichen, fügen Sie einfach eine weitere Spalte für die Unterelemente hinzu, und das Hauptelement umfasst 2 Spalten.

3

Erstellen Sie ein JPanel für die Unterkomponenten. Dann können Sie dem Panel einen EmptyBorder mit dem gewünschten Einzug hinzufügen.

+0

einfacher Weg für einfache Fixes als die 'GridBagLayout', und es wird nicht mit dem Fokus-Indikator wie ein' EmptyBorder' stören würde. – 2rs2ts

0

Eine weitere Option ist die Verwendung von SpringLayout und das Hinzufügen von Padding.

Verwandte Themen