Java/Eclipse IDE hier.JButtons in JPanels mit einem GridLayout JFrame
Ich habe einen JFrame, der auf ein GridLayout der Größe NxN festgelegt ist. N wird vom Benutzer als Befehlszeile am Anfang des Programms angegeben. JButtons in einem NxN-Muster werden zu dem Fenster in JPanels hinzugefügt, das von GridLayout an Stelle gesetzt wird (glaube ich).
Benötigt jedes JButton ein eigenes JPanel, um GridLayout zu verwenden? Ich habe den Eindruck, dass Sie nur ein JPanel für alle Buttons einrichten und das JPanel auf ein GridLayout für die JButtons einstellen können. Ich möchte ein weiteres JPanel links neben dem Button-Array hinzufügen, um Button-Klicks (JLabel) und einen Reset-Button innerhalb desselben linken JPanels anzuzeigen.
Hier ist (ein wenig) mein Code, wobei N durch den Benutzer gegeben wird, System ist mein Hintergrundklasse verarbeitet und Button ist die Klasse für Action/actionPerformed:
JFrame window = new JFrame("");
GridLayout layout = new GridLayout(N,N);
window.setLayout(layout);
for (int row = 0; row < N; row++){
for (int col = 0; col < N; col++){
JPanel panel = new JPanel();
JButton b = new JButton ("("+row+","+col+")");
window.add(b).setLocation(row, col);
panel.add(b);
b.addActionListener(new ButtonEvent(b, system, row, col));
window.add(panel);
}
}
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);
Und das ist, was ich habe (N = 4):
Hier ist (ungefähr), was ich suche (N = 4):
Alles, was ich brauche/will, sind zwei (oder mehr) JPanels, die ungefähr wie oben eingerichtet sind, und alle Layoutmanager, die ich ausprobiert habe, spielen mit dem GridLayout Layout JFrame nicht gut.
Alle Empfehlungen zu einer besseren Lösung sind eingeladen.
Danke!
+1 Siehe auch dieses verwandte [Beispiel] (http://stackoverflow.com/a/7706684/230513). – trashgod
@trashgod: Danke, dass du diesen großen Bug entfernt hast, denn jetzt wird er zumindest ohne Argumente laufen :-). Mein Scheck vorher war nutzlos, LOL. –
Schön! Ich mag es, wie dies die Größe ändert (oder tatsächlich nicht die Größe ändert). Der folgende Beitrag von trashgod erklärt genau, warum das so funktioniert. Vielen Dank! – Avertheus