Hoewel ik vermoed dat je er met een BorderLayout ook uit zou moeten komen, zou ik kiezen voor een GridBagLayout. Je moet deze wel even goed bestuderen en mee rommelen voordat je precies in de gaten hebt hoe het werkt.
Om het even duidelijk te maken hier een voorbeeldje wat ongeveer doet wat de bedoeling is. Lees de comments goed en pak de documentatie erbij om het te begrijpen. Pruts een beetje met de waarden die bij de GridBagConstraints worden opgegeven om te zien wat ze veranderen aan het gedrag van de componenten.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
| import javax.swing.*;
import java.awt.*;
public class GridBagExample extends JFrame {
public static void main ( String args[] ) {
GridBagExample app = new GridBagExample();
app.createGrid ();
}
private JPanel _left,
_right,
_center;
public GridBagExample () {
super ( "GridBag example" );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void createGrid () {
JPanel contentPanel = new JPanel ( new GridBagLayout () );
_left = new JPanel ();
_center = new JPanel ();
_right = new JPanel ();
GridBagConstraints gbc = new GridBagConstraints ();
// Ik schrijf het expres even uit voor de property names. Als
// je daar eenmaal mee bekend bent kun je ook de constructor van
// GridBagConstraints gebruiken
// De ruimte die overblijft door bijv. te resizen moet in zowel
// horizontale als verticale richting verdeeld worden.
// Zie ook GridBagConstraints.HORIZONTAL en
// GridBagConstraints.VERTICAL
gbc.fill = GridBagConstraints.BOTH;
// Gridbags werken met cellen. Je moet voor elk component dat je
// toevoegt aangeven in welke cel het terecht moet komen.
// De eerste cel is normaal gesproken linksbovenin de container
gbc.gridx = 0;
gbc.gridy = 0;
// Als je HTML kent is gridwidth en gridheight het best te vergelijken
// met resp. col- en rowspan attributen van bijv. een 'td' element.
// Het geeft aan in hoeverre er meerdere 'cellen' gebruikt moeten worden
// voor het toe te voegen component
gbc.gridwidth = 1;
// De weight* properties worden gebruikt om te bepalen in welke
// mate de overschietende ruimte (door bijv. resizen) verdeeld moet
// worden over componenten. 1 betekent 'Dit element weegt zwaar', 0
// betekent 'Dit element krijgt geen extra ruimte
gbc.weightx = 1f;
gbc.weighty = 1f;
contentPanel.add ( _left, gbc );
// We schuiven nu 2 cellen naar rechts, we willen tenslotte
// dat de derde cel (de _right panel) nagenoeg de zelfde eigenschappen
// krijgt als de eerste cel.
gbc.gridx = 2;
contentPanel.add ( _right, gbc );
// Terug naar de middelste cel.
gbc.gridx = 1;
// Deze mag geen extra ruimte toegekend
// krijgen als de ruimte opnieuw verdeeld wordt. De weightx moet dus
// 0 zijn.
gbc.weightx = 0f;
contentPanel.add ( _center, gbc );
// We geven de middelste cel even een standaard breedte en hoogte
_center.setPreferredSize ( new Dimension ( 300, 200 ) );
// en geven de linker en rechterpanel even een randje voor de duidelijkheid.
_left.setBorder ( BorderFactory.createLineBorder ( Color.BLACK ) );
_right.setBorder ( BorderFactory.createLineBorder ( Color.BLACK ) );
setContentPane ( contentPanel );
pack ();
setVisible ( true );
}
} |
offtopic:
Het is trouwens,
breedte, niet
brete 
edit:
Hm, applicaties afsluiten is ook wel handig

EXIT_ON_CLOSE added