2010-03-15 10 views
17

Ich versuche, ein JFrame mit einem nutzbaren Inhaltsbereich von genau 500x500 zu machen. Wenn ich dies tun ...Swing: JFrame Inhalt Bereich Größe

public MyFrame() { 
    super("Hello, world!"); 
    setSize(500,500); 
} 

... bekomme ich ein Fenster, dessen voller Größe ist 500x500, einschließlich der Titelleiste usw., wo ich wirklich ein Fenster, dessen Größe brauchen, ist so etwas wie 504x520 zu machen der Fensterrahmen und die Titelleiste. Wie kann ich das erreichen?

Antwort

23

Sie können einige Dinge versuchen: 1 - ein Hack:

public MyFrame(){ 
JFrame temp = new JFrame; 
temp.pack(); 
Insets insets = temp.getInsets(); 
temp = null; 
this.setSize(new Dimension(insets.left + insets.right + 500, 
      insets.top + insets.bottom + 500)); 
this.setVisible(true); 
this.setResizable(false); 
} 

2- oder hinzufügen JPanel auf den Inhaltsbereich des Rahmens und Stellen Sie einfach die bevorzugte/Mindestgröße des JPanel zu 500X500, Call-Pack()

  • 2- mehr portable
7

Es macht nichts, ich es herausgefunden:

public MyFrame() { 
    super("Hello, world!"); 

    myJPanel.setPreferredSize(new Dimension(500,500)); 
    add(myJPanel); 
    pack(); 
} 
+2

In Java 5 ist es tatsächlich möglich, dies ohne ein anderes Panel zu tun. Siehe http://stackoverflow.com/questions/2796775/setting-the-size-of-a-contentpane-inside-of-a-jframe. –

24

einfach verwenden:

public MyFrame() { 
    this.getContentPane().setPreferredSize(new Dimension(500, 500)); 
    this.pack(); 
} 

gibt es keine Notwendigkeit für ein JPanel in dort zu sein, wenn Sie nur die Rahmengröße festlegen möchten.

+0

Einfachste Lösung. –

Verwandte Themen