Okay, aus Ihren Kommentaren in einer anderen Antwort:
Kein Problem beim Kompilieren, einfach ist das Jpanel leer. Die Schaltflächen werden nicht angezeigt.
Nach dem Aufruf von this.Avvio();
müssen Sie Folgendes aufrufen:
%Vor%
Dies erzeugt die folgenden Ausgaben (vor und nach der Größenänderung):
Aber es gibt immer noch kein JScrollPanel
Dies löst zumindest das erste Problem, allerdings haben Sie mehr Fehler in Ihrem Code, von denen einige bereits in anderen Antworten kommentiert wurden:
-
Sie erweitern JFrame
, dies wird nicht benötigt, da Sie eine JFrame
instance / object erstellen und später verwenden können. Du änderst nie das Verhalten von JFrame
und deshalb brauchst du es nicht zu erweitern. Siehe Erweitert JFrame vs. das Erstellen innerhalb des Programms für mehr Informationen dazu.
-
Sie rufen nicht pack()
oder setSize(...)
auf, dies erzeugt ein kleines Fenster, das Sie manuell anpassen müssen. Rufen Sie pack()
auf, bevor Sie JFrame
sichtbar machen. (Wie am Anfang dieser Antwort vorgeschlagen).
-
Sie rufen .invokeLater()
method zweimal auf. Du musst es nur einmal anrufen, ich bevorzuge diesen Weg:
%Vor%
-
Sie rufen gridPanel.revalidate();
und gridPanel.repaint()
auf, während es Ihr Programm nicht beeinflusst, es wird nicht benötigt, da Ihre GUI immer noch nicht sichtbar ist und diese Aufrufe keine Auswirkungen auf Ihr Programm haben, können Sie sicher entfernen sie.
-
Sie erstellen ein neues GridBagConstraints
-Objekt bei jeder Iteration der for
-Schleife, Sie können einfach seine Eigenschaften darin ändern und es außerhalb der for
-Schleife deklarieren, wodurch Ihr Programm besser wird .
Wenn Sie die obigen Empfehlungen befolgt haben, können Sie einen Code wie diesen erhalten:
%Vor%
Was diese Ausgabe noch produziert:
ABER ... Wir können es noch ein bisschen verbessern!
Wir können zwei verschachtelte for
-Schleifen für die GridBagConstraints
-Eigenschaften sowie die Generierung der Schaltflächen haben:
%Vor%
Und dieses Beispiel ist (meiner Meinung nach) einfacher zu lesen und zu verfolgen. Und dies ist die Ausgabe, die der obige Code erzeugt:
Sie können immer noch wählen, welchen Code Sie verwenden möchten, entweder indem Sie die Änderungen im ersten Teil dieser Antwort vornehmen, der zweite den obigen Empfehlungen folgt oder den letzten, der kürzer ist.