2010-03-15 2 views
17

Я пытаюсь создать JFrame с полезной областью содержимого ровно 500x500. Если я сделаю это ...Swing: установить размер области содержимого JFrame

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

... Я получаю окно, чей полный размер 500x500, включая строку заголовка и т.д., где действительно нужно окно, размер которого что-то вроде 504x520 для учета границы окна и заголовок. Как я могу это достичь?

ответ

23

вы можете попробовать несколько вещей: 1 - хак:

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- или Добавить JPanel в панели содержимого фрейма и Просто установите предпочтительный/минимальный размер из JPanel в 500x500, вызов пакета()

  • 2- более портативен
7

Ничего, я понял это:

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

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

В Java 5 на самом деле можно сделать это без использования другой панели. См. Http://stackoverflow.com/questions/2796775/setting-the-size-of-a-contentpane-inside-of-a-jframe. –

24

Просто используйте:

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

Там нет необходимости для JPanel, чтобы быть там, если вы просто хотите, чтобы установить размер фрейма.

+0

Простейшее решение. –

Смежные вопросы