Zum Inhalt springen

JFrame: Insets


azett

Empfohlene Beiträge

Hallo zusammen,

ich baue mir ein JFrame und setze ein JPanel als ContentPane. Das ContentPane bekommt eine feste Größe. Das JFrame soll nun so breit und so hoch wie das ContentPane sein, plus Insets des JFrames.

Mein Problem ist: Wenn ich das JFrame erstellt habe, sind all seine Insets angeblich 0. Da es nun genauso groß ist wie sein ContentPane, aber noch Platz für Rahmen und Titelleiste braucht, geht mir die komplette Optik in die Binsen.

Lasse ich mir allerdings zunächst einen MessageDialog anzeigen, kennt es danach seine Insets auf einmal, und alles wird wie gewünscht angezeigt.

Woran liegt das und wie schaffe ich Abhilfe? Ich habe ausgiebigst im Netz gesucht, aber keine Lösung gefunden. Vielleicht hab ich mich auch zu sehr verrannt, und die Lösung ist ganz simpel...? Vielen Dank schonmal für eure Hilfe!

..azett


public class MeinFrame extends JFrame {
public MeinFrame() {
super();
MeinPanel panel = new MeinPanel();
setContentPane(panel);

JOptionPane.showMessageDialog(this, "Zusätzlicher Dialog");

Insets myInsets = this.getInsets();
int myWidth = this.getContentPane().getWidth()
+ myInsets.left
+ myInsets.right;
int myHeight = this.getContentPane().getHeight()
+ myInsets.top
+ myInsets.bottom;
this.setSize(myWidth, myHeight);
this.setVisible(true);
}

public class MeinPanel extends JPanel {
public MeinPanel() {
// GUI-Elemente...
this.setSize(400,200);
this.setVisible(true);
}
}

public static void main(String[] args)
{
MeinFrame neu = new MeinFrame();
}
}
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jau, aber ich verwende ein Null-Layout auf dem ContentPane - pack() staucht mir das gesamte Programmfenster auf die Titelleiste zusammen. Zumal ich mir dann immer noch die Frage stelle, warum das JFrame seine Insets zunächst mit 0 angibt...

Aber trotzdem vielen Dank :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zumal ich mir dann immer noch die Frage stelle, warum das JFrame seine Insets zunächst mit 0 angibt...
Weil es genau so in der Doku steht:

The size of the frame includes any area designated for the border. The dimensions of the border area may be obtained using the getInsets method, however, since these dimensions are platform-dependent,
a valid insets value cannot be obtained until the frame is made displayable by either calling pack or show.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...