web-dev-qa-db-ja.com

Swing:JFrameコンテンツ領域のサイズを設定します

使用可能なコンテンツ領域がちょうど500x500のJFrameを作成しようとしています。私がこれをしたら...

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

...タイトルバーなどを含めて、フルサイズが500x500のウィンドウが表示されます。ウィンドウの境界線とタイトルバーを考慮して、504x520のようなサイズのウィンドウが本当に必要です。どうすればこれを達成できますか?

21
igul222

あなたはいくつかのことを試すことができます: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に設定し、pack()を呼び出します。

  • 2-はよりポータブルです
26
ring bearer

単に使用してください:

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

フレームのサイズを設定するだけの場合は、JPanelを配置する必要はありません。

26
Michael

気にしないで、私はそれを理解しました:

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

    myJPanel.setPreferredSize(new Dimension(500,500));
    add(myJPanel);
    pack();
}
7
igul222