Java-Swing - JButtons auf Neue Zeile
Ich versuche, drucken Sie eine dynamisch generierte Liste von Tasten, die mit jeder Schaltfläche in einer neuen Zeile.
public void addComponentToPane(Container pane) {
JTabbedPane tabbedPane = new JTabbedPane();
//Create the "cards".
JPanel card1 = new JPanel() {
JPanel card1 = new JPanel()
...
int n = 10;
JButton[] jButtons = new JButton[10];
for(int i=0; i<n; i++){
jButtons[i] = new JButton("test" + i);
card1.add(jButtons[i]);
//card1.add("<br>");//<--this is wrong; but hopefully you get my point.
jButtons[i].addActionListener(this);
}
InformationsquelleAutor John R | 2011-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen Sie Sie in einer box:
oder, wenn Sie wollen, dass alle buttons die gleiche Größe haben, verwenden Sie GridLayout mit einer Spalte:
InformationsquelleAutor Denis Tulskiy
Hier zwei Lösungen mit einer eingeschränkten
GridLayout
und einBoxLayout
Bevorzuge ich die
GridLayout
(auf der linken Seite), da es normalisiert die Breite der buttons und macht es einfach, fügen Sie einen kleinen Raum zwischen Ihnen.InformationsquelleAutor Andrew Thompson
Verwenden
GridBagLayout
- und set -GridBagConstaints.gridy
Feld.GridBagLayout ist vielleicht veraltet, aber ist mehr mächtig / klar/ non_buggy als andere Benutzerdefinierte LayoutManagers +1
BTW, warum ist es als überholt gilt? Wir sollten wirklich vermeiden, verwenden es in der aktuellen swing-Projekte? Falls ja, was ist eine alternative... ?
guter Punkt, aber (wenn verglichen wird, ist das MigLayout, TableLayout) GBC und SpringLayout (bessere alternative, die einfacher und intuitiver) nicht funktioniert mit dem leeren Raum richtig, (e.g die Größe der container-Erzeugung zum Beispiel Situationen, wenn erforderlich, zu teilen 10/3, Ergebnis ist der leere Raum in einem pixel), in den meisten Fällen erforderlich ist, zu überschreiben getPrefferedSize, aber die Antwort ist von Ihnen positiv bewertet werden von mir, weil die GUI korrekt vorgenommen werden kann diese mit wenig Aufwand
InformationsquelleAutor adatapost
Ich nehme an, man braucht so etwas wie dieses :
Für diese benötigen Sie einen Box-Layout , siehe hierzu weitere details : How to Use BoxLayout
und, wenn nötig, hier ist eine demo : Java Tutorials Sample Code – BoxLayoutDemo.java
InformationsquelleAutor COD3BOY