2017-05-15 9 views
0

Auch wenn ich etwas über gewichtige las ich keine Leerzeichen Codefragment unten entfernen konnte:Schaukel GridBagLayout nicht (entfernen) verteilen leere Räume

JPanel panel = new JPanel(); 
    scrollPane.setViewportView(panel); 
    GridBagLayout gbl_panel = new GridBagLayout(); 
    GridBagConstraints gc = new GridBagConstraints(); 
    gbl_panel.columnWidths = new int[]{0, 0, 0, 0, 0}; 
    gbl_panel.rowHeights = new int[]{0, 0}; 
    gbl_panel.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; 
    gbl_panel.rowWeights = new double[]{0.0, Double.MIN_VALUE}; 
    panel.setLayout(gbl_panel); 
    for(int i = 0;i<3;i++){ 
     gc.gridy = i; 
     panel.add(new JButton("hi"),gc); 
    } 

That's what I get

That's what I want

Es verteilt diese 3 Tasten mit gleichen Abständen (oben, Mitte, unten) Wenn die Gesamtgröße der Komponenten ist größer als Panel-Größe (z. B. 10 Schaltfläche hinzufügen) gibt es kein Problem.Aber wenn die Gesamtgröße der Komponenten klein größer als die Größe des Panels verteilt es alle Räume. Ich möchte meine Bestandteile Linie für Linie einstellen (von oben nach unten ohne irgendwelche Räume zwischen Bestandteilen) Entschuldigung für Unannehmlichkeit danke!

+1

Ihr 'rowWeights' Array hat zwei Elemente. Das zweite Element in diesem Array ist eine von Null verschiedene Gewichtung. Es ist daher keine Überraschung, dass der zweiten Zeile in Ihrem Layout zusätzlicher Speicherplatz zugewiesen wird. – VGR

+0

Wie wird der zugewiesene zusätzliche Speicherplatz entfernt? –

+0

Geben Sie für jede Zeile ein Zeilengewicht an. Jede Zeile mit einem Gewicht von Null wird keinen zusätzlichen Platz zugewiesen. – VGR

Antwort

1

Sie benötigen GridBagConstraintsfill Feld

Von JavaDocs

* This field is used when the component's display area is larger 
* than the component's requested size. It determines whether to 
* resize the component, and if so, how. 

fill legt fest, ob Komponente angepasst werden soll und wie.

weight legt fest, wie viel zusätzlichen Platz die Komponente

UPDATE verwenden sollte:

Fügen Sie alle JComponent z.B. JPanel nach all Ihren Tasten und Set fill für die JPanel und weight=1. Die Gewichte Ihrer Schaltflächen sind 0, so dass der gesamte zusätzliche Platz zum Panel hinzugefügt wird.

+0

Aber ich möchte die Größe der Tasten nicht ändern.Ich möchte nur Lücken füllen und sie Zeile für Zeile setzen. (Von oben nach unten sollten alle Leerzeichen in der Unterseite nicht zwischen den Tasten sein) BTW, danke für Ihr Interesse. –

+0

Die Antwort aktualisiert – StanislavL

+0

Es füllt und entfernt Leerzeichen, aber immer noch die Größe meiner Schaltflächen, um alle Leerzeichen zu füllen :(Ich möchte nicht die Größe ändern.Nur wollen alle Lücken zwischen meinen Komponenten zu entfernen und diese Lücken am Ende des Feldes hinzufügen. –

Verwandte Themen