Wenn ich ein Layout auf JFrame
mit setLayout
setze und es dann mit getLayout
abrufen, dann bekomme ich einen anderen LayoutManager
. Was geht hier vor sich??Warum ist das JFrame-Layout nicht das, das ich einstelle?
public class Lay {
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
java.awt.Container container =
new javax.swing.JFrame();
//new javax.swing.JPanel();
java.awt.LayoutManager layout =
new java.awt.GridLayout();
container.setLayout(layout);
layout = container.getLayout();
System.err.println(layout);
}
});
}
}
Gibt
java.awt.BorderLayout[hgap=0,vgap=0]
aber wenn ich JFrame
mit JPanel
ersetzen ich
java.awt.GridLayout[hgap=0,vgap=0,rows=1,cols=0]
Zweiter vor mir. Gut gemacht, mein Herr! – basszero
Für die Begründung hinter dem getContentPane-Zeug erklärt Hans Muller: http://weblogs.java.net/blog/hansmuller/archive/2005/11/jframeadd_conte.html – McDowell
mit anderen Worten: setLayout() wird in JFrame überschrieben, während getLayout() ist nicht ... –