Java / Eclipse IDE hier.
Ich habe einen JFrame, der auf ein GridLayout der Größe NxN gesetzt ist. N wird vom Benutzer als Befehlszeile am Anfang des Programms angegeben. JButtons in einem NxN-Muster werden dem Fenster in JPanels hinzugefügt, das von GridLayout an Ort und Stelle gesetzt wird (glaube ich).
Braucht jeder JButton sein 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 bisschen) mein Code, wobei N vom Benutzer angegeben wird, System ist meine Hintergrundprozessklasse und ButtonEvent ist die Klasse für ActionListener / actionPerformed:
%Vor%Und das habe ich (N = 4):
Hier ist (ungefähr) wonach ich suche (N = 4):
Alles, was ich brauche / will, sind zwei (oder mehr) JPanels, die ungefähr wie oben eingerichtet sind, und alle Layout-Manager, die ich ausprobiert habe, spielen nicht gut mit dem GridLayout-Layout-JFrame.
Irgendwelche Empfehlungen zu einer besseren Lösung sind eingeladen.
Danke!
Benötigt jeder JButton ein eigenes JPanel, um GridLayout zu verwenden?
Nein. Add und setLayout auf JFrame tun nicht, was sie erscheinen. JFrame ist Top-Level-Container und es ist besser, Ihre Inhalte in JPanels zu organisieren.
Sie sollten Ihre Panels in dieser Form organisieren:
%Vor%Fügen Sie dann JPanel zum JFrame hinzu. Fügen Sie auch Panels in separate Klassen ein:
%Vor% Ein Vorteil, wenn Sie jedem Button (oder einer Gruppe von Buttons) ein eigenes Panel geben, ist, dass das verschachtelte Panel ein anderes Layout haben kann. In diesem Beispiel hat jedes verschachtelte ButtonPanel
den Standard FlowLayout
, sodass die Größe des Buttons als umschließender Container konstant bleibt ist in der Größe verändert.
Tags und Links java user-interface swing layout