package javacodebook.gui.componentsinlayout;

import javax.swing.*;
import java.awt.*;

/**
 * @author Benjamin Rusch
 * 
 * Im BorderLayout wird die bevorzugte Größe der Komponenten 
 * nur teilweise berücksichtigt. Im CENTER-Bereich sogar komplett 
 * ignoriert. 
 * Will man die Größe einer Komponente dennoch ändern, hilft nur der 
 * Ausweg über einen zwischengelagerten Container.
 */

public class BorderFrame  extends JFrame {
	
	private JButton north 		= new JButton("Norden");
	private JButton south 		= new JButton("Süden");
	private JButton west 		= new JButton("Westen");
	private JButton east 		= new JButton("Osten");
	private JButton center 	= new JButton("Mitte");
	private Container content 	= null;
	private JPanel interPanel 	= new JPanel();
	
	/**
 	*	Konstruktor von BorderFrame.  
 	*/	
	public BorderFrame(String title) {
		super(title);
	    
   	    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 
		content = this.getContentPane();		
		content.setLayout(new BorderLayout());
		
		// Das interPanel besitzt kein Layout
		interPanel.setLayout(null);
		
		// Die bevorzugrte Größe vom Panel muss gesetzt werden, 
		// da sie standardmäßig auf 0 liegt. Das Panel würde sonst
		// nicht sichtbar werden 
		interPanel.setPreferredSize(new Dimension(50,40));
		
		// Für die Größe und Lage der Componente ist man nun wieder 
		// selber verantwortlich, muss/darf hier also gesetzt werden
		north.setSize(80,20);
		north.setLocation(70,10);
		
		// Das "interPanel" wird bestückt und anschließend in den NORTH-Bereich
		// des contentPanels gelegt. 
		interPanel.add(north);	
		content.add(interPanel,BorderLayout.NORTH);
		
		content.add(south,BorderLayout.SOUTH);
		content.add(west,BorderLayout.WEST);
		content.add(east,BorderLayout.EAST);
		content.add(center,BorderLayout.CENTER);		
	}
}
