package javacodebook.gui.componentsinlayout; import javax.swing.*; import java.awt.*; /** * * 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); } }