Ich probiere gerade ein bisschen mit LayoutManagern herum, bekomme aber bei folgendem Code nur einen grauen Bildschirm:
public class MainFrame extends JFrame {
public MainFrame() throws IOException, ClassNotFoundException {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setExtendedState(MAXIMIZED_BOTH);
this.setUndecorated(true);
this.setVisible(true);
this.add(new MenuPanel(this), BorderLayout.CENTER);
}
}
public class MenuPanel extends JPanel {
public MenuPanel(MainFrame mainFrame) {
this.setBackground(Color.RED);
this.setLayout(new GridLayout(3, 3)); /* hier hakt es */
JButton b1 = new JButton("b1");
this.add(b1);
}
}
Ich habe verschiedene LayoutManager ausprobiert, aber habe immer das gleiche Problem, sobald ich dem MenuPanel einen Button hinzufüge.
Es gibt ein paar Caveats, aber nur wenige und kleine. Eine ist, wie schon angedeutet: “setVisible(true)” auf einem Frame ERST DANN aufrufen, wenn alles hinzugefügt wurde.
Ansonsten: Wenn ein Konstruktor einer GUI-Klasse eine IOException und eine ClassNotFoundException wirft, ist das auf mehreren Ebenen schmerzhaft. Weg damit.