2012-04-08 11 views
1

Ich erstelle ein Programm, in dem es drei JPanels - 2 in der oberen Hälfte des Bildschirms und 1 in der unteren Hälfte gibt. Hier ist der Code zu positionieren, wie so:
people.setBounds(0, 0, Math.round(getWidth()/3), Math.round(getHeight()/2));
resources.setBounds(people.getX() + people.getWidth(), 0, Math.round(getWidth()/3), Math.round(getHeight()/2));
neighboring.setBounds(resources.getX() + resources.getWidth(), 0, Math.round(getWidth()/3), Math.round(getHeight()/2));
Aber leider, das ist das Ergebnis, das ich bekommen: enter image description here
Ich habe versucht, die Platten zu bekommen das Fenster perfekt passen, aber wie Sie Sie sehen, sie waren ein bisschen größer als erwartet. Irgendeine Hilfe, bitte?JPanel unerwünschte Positionen und/oder Größen

Antwort

3

Verwenden Sie die Layout-Manager, nicht SetBounds, und lassen Sie die Layouts die Arbeit für Sie erledigen. Ihre GUI könnte mit minimalem Code erstellt werden, indem einige JPanels verschachtelt werden, die ein einfaches GridLayout verwenden. Weitere Informationen hierzu finden Sie unter Lesson: Laying Out Components Within a Container

+0

Ok, aber mit einem GridLayout kann ich nicht mein "Neighbouring Civilizations" -Panel füllen die zweite Zeile; und mit einem GridBagLayout ist das Sizing wirklich, wirklich winzig aus irgendeinem Grund ... –

+0

@Daniel - warum kannst du deine JPanel nicht füllen die zweite Reihe? Die gesamte GUI verwendet GridLayout (2, 1) für zwei Zeilen, 1 Spalte. Dann fügen Sie in der oberen Zeile ein JPanel hinzu, das GridLayout (1, 2) verwendet, das für 1 Zeile und 2 Spalten steht. In der oberen Zeile fügen Sie "people of the ..." und "resources" JPanels hinzu, und in der unteren Zeile der Haupt-GUI fügen Sie die "Neighboring Civ ..." JPanel hinzu. Der Schlüssel besteht darin, JPanels * zu verschachteln, die ihre eigenen Layouts verwenden. –

+0

Ich dachte eigentlich an ein anderes Panel ("Statistics") - ich habe gerade ein neues GridLayout (2, 2) erstellt und das funktioniert perfekt. Vielen Dank! –