GridLayout Basics

blz

Bekanntes Mitglied
Grüß euch zusammen!

Habe vor Kurzem ein bisschen mit der GUI Programmierung begonnen.
Habe gleich auf den oracle pages selbst gelesen, dass sie nicht empfehlen, ein Layout händisch zusammenzubasteln sondern entsprechende unterstützende GUI-Software zu verwenden.

Allerdings dachte ich mir, dass es wahrsch. schon sinnvoll ist, gewisse basics trotzdem zu beherrschen. Habe also angefangen, die einschlägigen Seiten zu studieren ... und es scheint zwar alles ganz hierarchisch und logisch, aber irgendwie funktionierts nie wie es soll!

Mein Mini Projekt:

Ich möchte ein Fenster, das aus zwei Blöcken besteht:
Der linke Block soll 6 Textfelder breit und 8 Textfelder hoch sein (also 48 TFs enthalten).
Dann soll etwas Abstand nach rechts sein und ein zweiter Block mit Textfeldern entstehen.
Jedes Textfeld soll idealerweise genau zwei Ziffern aufnehmen können (andere Eingabe am besten gar nicht erst zulassen)
Dann halt noch ein Button um die Eingaben zu lesen, das wärs schon.

Allerdings bekomm ichs nicht mal hin diese Textfelder anzuordnen ...
Habe gelesen, das GridLayout wäre ideal, da es ein Raster vorgibt.

Ich habe das ganze jetzt mal in eineb Klasse extends JApplet gekleidet.
(Weiß aber nicht wirklich, ob ein Frame, ein JFrame oder ein Applet besser wäre - unmöglich, das herauszufinden ...)

Hier ist mal mein Code-Schnipsel:


Java:
public void init() {
        int maxVGap = 15;
        int maxHGap = 15;
       
        GridLayout gl = new GridLayout(8, 6, 15, 15);
       
        final JPanel contentPane = new JPanel();
        contentPane.setLayout(gl);
       
        // just a fake textfield
        JTextField tf = new JTextField(2);
        Dimension tfDimension = tf.getSize();
       
       
        contentPane.setPreferredSize(new Dimension((int) (tfDimension.getWidth() * 13 + maxHGap * 12), (int) (tfDimension.getHeight() * 8 + maxVGap * 7)));
       
       
        for (int i = 0; i < 48; i++) {
            contentPane.add(new JTextField());
        }                   
       
        setContentPane(contentPane);
}

Seltsamerweise sieht man immer nur ein Textfield oben links, die anderen erscheinen erst, wenn man mit dem Cursor reinspringt. Woran liegt das?
Und ist das jetzt generell richtig und sinnvoll programmiert?
Und wenn ich jetzt den rechten Block dazu machen will, mach ich dann beide Blöcke auf ein Panel und adde die beidem Panel zu meinem contentPane?
 

Enceladus271

Bekanntes Mitglied
getSize() liefert die aktuelle Größe der Komponente. Wenn bei einer Komponente noch nie die Größe gesetzt wurde (z.B. durch setSize oder durch einen LayoutManager) liefert getSize() als Ergebnis 0x0. Daher ist tf.getSize() hier 0x0 und somit die Berechnung der Preferred Size fehlerhaft.

Du musst aber die Preferred Size auch garnicht setzen. Das wird automatisch erledigt.
Java:
    final JPanel textFieldPanel = new JPanel();
     textFieldPanel.setLayout( new GridLayout( 8, 6, 15, 15 ) );
     for ( int i = 0; i < 48; i++ ) {
       textFieldPanel.add( new JTextField( 2 ) );
     }
    System.out.println( "panels preferred size: " + textFieldPanel.getPreferredSize() );
Eine Möglichkeit ist es zwei dieser Panels zu erstellen und z.B. zum contentPane hinzuzufügen.

Eine andere mögliche Fehlequelle für das Verhalten mit den erst unsichtbaren Textfeldern ist das Hinzufügen von Komponenten, nachdem der Frame schon sichtbar ist. Daher am besten nochmal kontrollieren, dass der Frame erst auf sichtbar gesetzt wird nachdem das gesamte Layout fertig ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E GridLayout auf ScrollPane AWT, Swing, JavaFX & SWT 4
thor_norsk GridLayout AWT, Swing, JavaFX & SWT 11
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
pkm kryptisches Verhalten bei GridLayout AWT, Swing, JavaFX & SWT 4
K Swing GridLayout - x und y bei Mausklick ausgeben AWT, Swing, JavaFX & SWT 4
S GridLayout SWT: Anordnung Composites nebeneinander AWT, Swing, JavaFX & SWT 2
B GridLayout - wie am besten implementieren AWT, Swing, JavaFX & SWT 3
L Eigene JComponent in GridLayout AWT, Swing, JavaFX & SWT 9
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
F JPanel "verschmelzen" GridLayout AWT, Swing, JavaFX & SWT 10
M LayoutManager GridLayout funktioniert nicht AWT, Swing, JavaFX & SWT 0
T LayoutManager GridLayout panel.setSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
F Gridlayout AWT, Swing, JavaFX & SWT 6
A JPanel oder GridLayout Größe festsetzten AWT, Swing, JavaFX & SWT 4
X GridLayout JPanel austauschen AWT, Swing, JavaFX & SWT 2
A JFrame Größenänderung mit Maus und GridLayout AWT, Swing, JavaFX & SWT 10
J Button in GridLayout AWT, Swing, JavaFX & SWT 2
C LayoutManager Grafik soll nicht im GridLayout Skalieren AWT, Swing, JavaFX & SWT 3
L LayoutManager GridLayout verschiebt sich AWT, Swing, JavaFX & SWT 6
B GridLayout AWT, Swing, JavaFX & SWT 6
T Spaltengröße einzelner Spalten in Gridlayout festlegen AWT, Swing, JavaFX & SWT 3
Karuka Abstände im GridLayout ändern AWT, Swing, JavaFX & SWT 8
Karuka 2D-Grafik Bilder in GridLayout einfügen AWT, Swing, JavaFX & SWT 7
C Scollpane an dynamisches GridLayout anpassen? AWT, Swing, JavaFX & SWT 3
J Swing Bilder anzeigen in Gridlayout AWT, Swing, JavaFX & SWT 11
C Linien über GridLayout zeichnen AWT, Swing, JavaFX & SWT 3
K Probleme mit Gridlayout AWT, Swing, JavaFX & SWT 4
U Elemente im Panel zentrieren mit GridLayout AWT, Swing, JavaFX & SWT 3
Z Swing JButton erweitern/Gridlayout AWT, Swing, JavaFX & SWT 2
L Swing GridLayout AWT, Swing, JavaFX & SWT 4
lumo LayoutManager SWT GridLayout - Reihenfolge ändern AWT, Swing, JavaFX & SWT 7
C Swing GridLayout: Kann man die Spaltenbreiten variabel gestalten? AWT, Swing, JavaFX & SWT 4
J SWT Größe eines Composite mit Gridlayout festlegen AWT, Swing, JavaFX & SWT 2
Y Kein GantChart in einem GridLayout AWT, Swing, JavaFX & SWT 5
M Formular in GridLayout ? AWT, Swing, JavaFX & SWT 17
R LayoutManager Problem mit GridLayout AWT, Swing, JavaFX & SWT 5
F LayoutManager GridLayout 0/0 auf andere Ecke setzen AWT, Swing, JavaFX & SWT 4
Rudolf Swing Gridlayout und Grouper vorhanden? AWT, Swing, JavaFX & SWT 4
S SWT GridLayout scrollbar machen? AWT, Swing, JavaFX & SWT 7
A Gridlayout Vertikal anordnen AWT, Swing, JavaFX & SWT 6
D LayoutManager GridLayout, 2 labels nebeneinander AWT, Swing, JavaFX & SWT 8
B Swing GridLayout.add über 2 Spalten? AWT, Swing, JavaFX & SWT 7
R LayoutManager GridLayout verändert isch andauernd AWT, Swing, JavaFX & SWT 4
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
B GridLayout und scrollbar AWT, Swing, JavaFX & SWT 5
J Swing Bild in GridLayout AWT, Swing, JavaFX & SWT 8
aze GridLayout: Keine automatische Ausdehnung AWT, Swing, JavaFX & SWT 2
M SWT keine Scrollbar bei widgets.List und GridLayout AWT, Swing, JavaFX & SWT 2
M Image an Gridlayout anpassen AWT, Swing, JavaFX & SWT 5
E SWT Problem mit Gridlayout AWT, Swing, JavaFX & SWT 3
G SWT GridLayout AWT, Swing, JavaFX & SWT 2
lumo SWT GridLayout - clear? AWT, Swing, JavaFX & SWT 4
T GridLayout Zeilen Hintergrund AWT, Swing, JavaFX & SWT 5
N Gridlayout macht Probleme AWT, Swing, JavaFX & SWT 3
L GridLayout verändert festgesetzte Größe der Komponenten AWT, Swing, JavaFX & SWT 12
S Gridlayout - Tabellenzeile "beenden" AWT, Swing, JavaFX & SWT 3
Dragonfire GridLayout Probleme AWT, Swing, JavaFX & SWT 4
A JLabel, Icons und GridLayout AWT, Swing, JavaFX & SWT 3
C JPanel-Array in GridLayout AWT, Swing, JavaFX & SWT 4
G SWT GridLayout AWT, Swing, JavaFX & SWT 3
N Gridlayout 2. Spalte füllen AWT, Swing, JavaFX & SWT 4
W Problem mit GridLayout AWT, Swing, JavaFX & SWT 11
K Problem mit nem GridLayout AWT, Swing, JavaFX & SWT 5
T GridLayout, zu wenig Platz zwischen Widgets AWT, Swing, JavaFX & SWT 3
T SWT/Eclipse Form Controls zur Laufzeit hinzufügen,GridLayout AWT, Swing, JavaFX & SWT 4
M GridLayout mit fester Größe möglich? AWT, Swing, JavaFX & SWT 3
E Einfache Frage zu GridLayout AWT, Swing, JavaFX & SWT 35
G Größe der einzelenen Felder im GridLayout einstellbar? AWT, Swing, JavaFX & SWT 5
P Canvas in JFrame mit GridLayout AWT, Swing, JavaFX & SWT 4
F GridLayout: verschiedene Spaltenbreiten AWT, Swing, JavaFX & SWT 2
S GridLayout ? AWT, Swing, JavaFX & SWT 5
D AutoResize bei GridLayout ausschalten? AWT, Swing, JavaFX & SWT 2
D GridLayout mit nur einer Spalte, aber n Zeilen AWT, Swing, JavaFX & SWT 2
E GridLayout seltsame Anordnungsstrategie AWT, Swing, JavaFX & SWT 6
S Problemen mit Canvas-Objekten im GridLayout AWT, Swing, JavaFX & SWT 8
L Grids benennen beim GridLayout AWT, Swing, JavaFX & SWT 5
S GridLayout mit sehr großen Abständen AWT, Swing, JavaFX & SWT 3
I SWT GridLayout AWT, Swing, JavaFX & SWT 5
V Frage zu GridLayout. AWT, Swing, JavaFX & SWT 3
P SWT GridLayout AWT, Swing, JavaFX & SWT 5
O gridlayout konstante größe AWT, Swing, JavaFX & SWT 3
TRunKX Problem mit dem GridLayout und den proportionen AWT, Swing, JavaFX & SWT 4
P SWT: GridLayout und Textfelder AWT, Swing, JavaFX & SWT 1
M GridLayout funktioniert nicht mehr. AWT, Swing, JavaFX & SWT 2
F GridLayout horizontal ausrichten AWT, Swing, JavaFX & SWT 6
K GridLayout: Colspan, Rowspan AWT, Swing, JavaFX & SWT 2
R GridLayout spinnt AWT, Swing, JavaFX & SWT 14
C leeres Element in Gridlayout einfuegen AWT, Swing, JavaFX & SWT 3
D Problem bei GridLayout und JPanels AWT, Swing, JavaFX & SWT 4
J GridLayout AWT, Swing, JavaFX & SWT 5
H GridLayout: Größe einer Komponente ändern AWT, Swing, JavaFX & SWT 2
L Frage zum GridLayout AWT, Swing, JavaFX & SWT 4
G kann man die aufteilung von GridLayout beeinflussen ? AWT, Swing, JavaFX & SWT 10
O Basics - Anwendung erstellen mit mehreren Szenen AWT, Swing, JavaFX & SWT 1
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
N JFreeChart - Basics AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben