Java JFrame dekorieren (Rahmen)

JFrame dekorieren (Rahmen)

Der Rahmen eines jeden JFrame ist zunächst immer gleich: Menü, TitleBar, Buttons zum Verkleinern und Schließen etc.
Manchmal soll ein JFrame aber anders aussehen:
• JFrame ohne Rahmen
• JFrame ohne Titel / JFrame ohne Kopfzeile

JFrame ohne Rahmen

Den Rahmen eines JFrame entfernen:
    // JFrame ohne Rahmen:
    final JFrame frame = new JFrame();
    frame.setUndecorated(true);
    frame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
    frame.setVisible(true);

Wichtig ist, daß der Frame nach der Dekoration sichtbar gemacht wird, bzw. wenn er davor schon sichtbar war, trotzdem nochmal setVisible(true) aufgerufen wird, um einen Repaint auszulösen.

Für weitere Details können die Stichworte aus den Beispiel-Codezeilen für eine weitere Suche in der Java API-Doc verwendet werden.

setUndecorated geht nicht?

Nachdem ich häufiges Feedback bekommen habe, daß setUndecorated(true) manchmal nicht geht, hier noch mal ganz explizit: die Änderung wird erst nach den nächsten repaint sichtbar. Steht ein solcher nicht ohnehin an, so ist er durch den Aufruf von setVisible explizit auszulösen:
    // Rahmen eines bestehenden JFrame entfernen und mit setVisible einen repaint auslösen:
    frame.setUndecorated(true);
    frame.setVisible(true);



Nach oben, Inhaltsverzeichnis, Impressum Admin: Artikel editieren