AWT BorderLayout

prog1

Mitglied
Hallo,

ich hab ein Problem beim verwenden vom BorderLayout. Leider verhalten sich meine Panels nicht so wie ich es möchte. Beim vergrößern des Fensters wird bei dem einem Panel mit einer Canvas Zeichenfläche nur die Breite vergrößert, aber die Höhe nicht. Leider finde ich keinen Lösung.

Hier mein Code

Java:
package aufgabe4;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Blackboard extends Frame {

	private final static long serialVersionUID = 20L;
	private Panel top, bottom, flaeche;
	private Button clear, exit;
	private Choice color;
	private Canvas area;

	public Blackboard() {

		// Frame
		super("Blackboard");
		setSize(600, 600);
		setLocationRelativeTo(getParent());

		// Listener zum Beenden des Fensters
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

		// flaeche
		flaeche = new Panel();
		flaeche.setLayout(new BorderLayout());
		flaeche.setSize(550, 600);
		add(BorderLayout.CENTER, flaeche);

		// top
		top = new Panel();
		top.setLayout(new GridLayout(1, 3));
		// color
		color = new Choice();
		color.add("Black");
		color.add("Blue");
		color.add("Cyan");
		color.add("DarkGrey");
		color.add("Gray");
		color.add("Green");
		color.add("LightGray");
		color.add("Magenta");
		color.add("Orange");
		color.add("Pink");
		color.add("Red");
		color.add("White");
		color.add("Yellow");
		// Button
		clear = new Button("clear");
		exit = new Button("exit");
		// add
		top.add(color);
		top.add(clear);
		top.add(exit);

		// bottom
		bottom = new Panel();
		// PaintingArea
		area = new Canvas();
		area.setBackground(Color.LIGHT_GRAY);
		area.setSize(550, 550);
		// add
		bottom.add(area);

		// add flaeche
		flaeche.add(BorderLayout.NORTH, top);
		flaeche.add(BorderLayout.SOUTH, area);

		setVisible(true);

	}

	public static void main(String[] args) {

		Blackboard board = new Blackboard();

	}

}


Danke für eure Hilfe 😀
 
Das liegt daran, dass beim BorderLayout die NORTH und SOUTH Komponenten in der Höhe nur soviel Platz bekommen wie nötig. Den restlichen vertikalen Platz nimmt die CENTER Komponente ein. Daher musst du das area-Panel an Position CENTER und nicht an Position SOUTH hinzufügen.
 

Neue Themen


Zurück
Oben