So wird ein JPanel in einem anderen JPanel maximiert

8

Ich denke, ich muss die Frage ein wenig umformulieren.

Aktualisierte Frage unten.

Ich habe ein JPanel, das enthält:

%Vor%

Es enthält die folgenden drei Bereiche:

JPanel mit fester Größe 'x' und 'y'

JPanel ohne feste Größe

JPanel ohne feste Größe und geringe Höhe

Das zweite JPanel enthält eine JTable, die so erweitert wird, dass sie die volle Höhe ausfüllt und das untere Panel wie erwartet nach unten drückt.

So:

%Vor%

t = obere Platte, m = mittleres Feld, b = unteres Feld.

Das funktioniert. Aber das untere Panel hat nicht das Gefühl, die gesamte Breite des Elterns zu füllen, was ein Problem ist.

%Vor%

Ich möchte das entweder, wo das Panel die gesamte Breite ausfüllt:

%Vor%

oder hier, wo das untere Feld zentriert ist:

%Vor%

Alte Frage unten:

Ich habe ein JPanel, das enthält:

%Vor%

Darin befinden sich drei weitere JPanels. Die ersten beiden sind von fester Größe und die mittlere nicht.

Ich möchte, dass mein Bodenteil nur die Höhe benötigt, die es benötigt, aber die gesamte verfügbare Breite des äußeren JPanels verwendet.

Ich habe versucht, Klebstoff zu verwenden, aber ohne Erfolg, und ich würde lieber nicht bevorzugte und Min / Max-Größen festlegen. Gibt es eine Möglichkeit, der Komponente zu sagen, dass sie die gesamte Breite der Eltern füllen soll, indem sie nur den Layout-Manager und das Framework verwendet. Ich würde lieber nicht anfangen, Hacks zu machen, wie Größen und übergeordnete Methoden zu setzen.

Hinweis: Ich kann keinen Kleber oder Füller in die innere Verkleidung geben, nur die äußere Verkleidung und ihr Layout-Manager können geändert werden.

Versuch 1:

Die Verwendung von myPanel.setLayout(new GridLayout(3, 1)); führte nicht zu den erwarteten Ergebnissen. Es hat ein Raster wie folgt gemacht:

%Vor%

Aber ich habe erwartet:

%Vor%

Versuch 2:

Die Verwendung von myPanel.setLayout(new GridLayout(0,1)); führte nicht zu den erwarteten Ergebnissen. Es hat ein Raster wie folgt gemacht:

%Vor%

Aber alle Paneele hatten die gleiche Größe und ignorierten die Beschränkungen.

    
Martin Nielsen 10.01.2013, 13:54
quelle

4 Antworten

5

Wenn ein BorderLayout verwendet wird und das b Panel in SOUTH oder PAGE_END ist, füllt es die gesamte Breite.

    
Andrew Thompson 10.01.2013, 14:50
quelle
13

Am einfachsten wäre es, einen anderen Layout-Manager zu verwenden, z. B. GridLayout , der Komponenten automatisch so ausfüllt, dass sie den übergeordneten Container füllen.

%Vor%     
Reimeus 10.01.2013 13:57
quelle
3

Sie können dazu GridBagLayout verwenden, indem Sie

verwenden %Vor%

Ein Beispiel für Ihre Hilfe in Bezug auf GridBagLayout.

Wie in Kommentaren dazu gefragt

Das BoxLayout ist eine weitere Alternative, die die bevorzugten Größen der Komponenten berücksichtigt. Sie können das versuchen, wenn GridBagLayout so hart ist: -)

Code mit GridBagLayout, für mehr Klarheit:

%Vor%

AUSGABE:

    
nIcE cOw 10.01.2013 14:07
quelle
-1

Hier wird ein benutzerdefiniertes JPanel zum Erweitern und Schrumpfen mit statischen Eingabewerten verwendet.
Der Java-Timer verzögert und beschleunigt die Panel-Anzeigezeit.

%Vor%

// Höhe und Breite für das Panel ermitteln, was wir als Folienhöhe anzeigen möchten.

%Vor%

// Timer mit einigen statischen Werten initialisieren - Mittlere Geschwindigkeit)

%Vor%

/ ** Funktion für schrumpfendes Jpanel      *      * /

%Vor%

// Höhe für die Folie bis zur obersten Position

%Vor%

}

// Klasse deklarieren und schrumpfen onclick -Ereignis verwenden

%Vor%     
sathya 06.07.2013 06:03
quelle