DarkSchlumpf Geschrieben 7. November 2007 Teilen Geschrieben 7. November 2007 Hallo, irgendwie versucht mich das GridLayout gerade zu veräppeln Gui ist von JFrame abgeleitet, nun sollen die Buttons in 10 Zeilen und 3 Spalten angezeigt werden. Die Buttons werden aber komischerweise über die komplette Fensterbreite einzeln untereinander angezeigt - kann mir jemand erklären warum? public GUI(){ this.setSize(500,500); JLabel label = new JLabel(); GridLayout grid = new GridLayout(10,3); label.setLayout(grid); label.add(new JButton("Test")); label.add(new JButton("Test")); label.add(new JButton("Test")); label.add(new JButton("Test")); label.add(new JButton("Test")); label.add(new JButton("Test")); label.add(new JButton("Test")); label.add(new JButton("Test")); this.add(label); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
room409 Geschrieben 8. November 2007 Teilen Geschrieben 8. November 2007 Das liegt vermutlich daran dass du zu wenig Buttons draufgelegt hast und das GridLayout hat irgendwie die eigenart hat bei einer kleineren Anzahl Komponenten als Zeilen die Komponenten untereinander zu legen. Lege einfach alle 30 voregesehen Komponenten auf das Layout dann sollte es funktionieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DarkSchlumpf Geschrieben 8. November 2007 Autor Teilen Geschrieben 8. November 2007 Aber eigentlich sollten die komponenten doch von links nach rechts zeilenweise aufgefüllt werden und die fehlenden Felder einfach leergelassen werden, oder hab ich da was falsch verstanden? Problem ist, dass ich das Grid dynamisch befüllen sollte, sprich es kommen weitere Elemente im Programmablauf hinzu, da kann ich am Anfang nicht alles füllen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kaeyu Geschrieben 8. November 2007 Teilen Geschrieben 8. November 2007 Steht eigentlich in der API ^^ GridLayout (Java 2 Platform SE v1.4.2) When both the number of rows and the number of columns have been set to non-zero values, either by a constructor or by the setRows and setColumns methods, the number of columns specified is ignored. Instead, the number of columns is determined from the specified number or rows and the total number of components in the layout. So, for example, if three rows and two columns have been specified and nine components are added to the layout, they will be displayed as three rows of three columns. Specifying the number of columns affects the layout only when the number of rows is set to zero. Versuch dein GridLayout mit 0 Zeilen und 3 Spalten (Beispiel: this.setLayout(new GridLayout(0,3)) Hier mal ein Prototyp, hab ich eben auf die schnelle gemacht: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Grad extends JFrame{ JButton b1,b2,b3,b4,b5,b6,b7,b8; public class ACTL implements ActionListener{ public void actionPerformed(ActionEvent ae){ JButton button = new JButton ("XYZ"); add(button); button.updateUI(); } } Grid(String titel){ super(titel); setLayout(new GridLayout(0,3)); b1 = new JButton("Test1"); b2 = new JButton("Test2"); b3 = new JButton("Test3"); b4 = new JButton("Test4"); b5 = new JButton("Test5"); b6 = new JButton("Test6"); b7 = new JButton("Test7"); b8 = new JButton("Test8"); add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8); b1.addActionListener(new ACTL()); } public static void main(String args[]){ Grid win = new Grid("GridLayout"); win.setSize(500,500); win.setLocationRelativeTo(null); win.setVisible(true); } } Gruß Raphael Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DarkSchlumpf Geschrieben 8. November 2007 Autor Teilen Geschrieben 8. November 2007 Steht eigentlich in der API ^^ Hmm, die wäre natürlich einen Blick wert gewesen Danke Dir für die Hilfe! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.