Ich habe eine Klasse, die eine JPanel namens Row erweitert. Ich habe eine Reihe von Reihe zu einem JLabel hinzugefügt, ist der Code, den folgenden:Einstellen der Größe eines JPanel
JFrame f=new JFrame();
JPanel rowPanel = new JPanel();
//southReviewPanel.setPreferredSize(new Dimension(400,130));
rowPanel.setLayout(new BoxLayout(rowPanel, BoxLayout.Y_AXIS));
rowPanel.add(test1);
rowPanel.add(test1);
rowPanel.add(test2);
rowPanel.add(test3);
rowPanel.add(test4);
rowPanel.setPreferredSize(new Dimension(600, 400));
rowPanel.setMaximumSize(rowPanel.getPreferredSize());
rowPanel.setMinimumSize(rowPanel.getPreferredSize());
f.setSize(new Dimension(300,600));
JScrollPane sp = new JScrollPane(rowPanel);
sp.setSize(new Dimension(300,600));
f.add(sp);
f.setVisible(true);
wo test1 ... etc eine Reihe ist. Wenn ich jedoch die Größe des Fensters ändere, wird das Layout der Zeile irgendwie unordentlich (es ändert sich auch die Größe) ... wie kann ich das verhindern?
Ich habe geändert mit getPreferredSize und setMaximumSize wie Sie oben vorgeschlagen (siehe meinen bearbeiteten Code) ... immer noch, es ist wie der Code überhaupt nicht existiert. Was ist, wenn ich ein Rahmenlayout habe? Wie lege ich die Größe fest? BorderLayout wird nicht in dem Link erwähnt, den Sie oben angegeben haben. – aherlambang
http://download.oracle.com/javase/tutorial/uiswing/layout/border.html – Cesar
Ihr bearbeiteter Code ist KEIN SSCCE. Ja, der Link erwähnt ein BorderLayout. Es gibt keine Möglichkeit, dass Sie den ganzen Abschnitt in 6 Minuten gelesen haben könnten !!! Ein Layout-Manager arbeitet mit den Komponenten, die dem Panel hinzugefügt wurden, und nicht mit dem Panel selbst. – camickr