JButtons in JPanels mit einem GridLayout JFrame

7

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!

    
Avertheus 29.04.2012, 05:37
quelle

3 Antworten

12

Hier versuchen Sie dieses Codebeispiel:

%Vor%

AUSGABE:

    
nIcE cOw 29.04.2012, 12:07
quelle
7
  

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%     
KrHubert 29.04.2012 06:27
quelle
3

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.

    
trashgod 29.04.2012 17:03
quelle

Tags und Links