0

フレームの内側のサイズを取得するにはどうすればよいですか? コンポーネントを追加できる部分を意味します。

やの.NETような言語を使用しているときは、いくつかのトリックを行います。フォームにパネルなどを追加し、(Windows フォームのドック プロパティを使用して) フォームを埋めてから、そのサイズを使用します。VBC#

でこれを行うために一生懸命努力しましたJavaが、成功しませんでした。a を使用しJPanelて CENTER にa を追加しようとしましたが、パネルがフレームを埋めますが、すべてのサイズ関連関数は0 を返します。JFrameBorderLayoutJPanel

4

3 に答える 3

2

getContentPanegetWidth / getHeightを使用してみてください:

getContentPane().getWidth()

getContentPane().getHeight()

単純な 1440x900 フレームでテストしたところ、1424x862 になりました

于 2013-07-04T08:06:37.200 に答える
0

あなたのやり方はうまくいくようです。しかし:

  • を手動で追加する必要はありませんJPanelgetContentPane()適しています。
  • そのサイズを取得したい場合。必要がある
    1. この JFrame をネイティブ画面リソースに接続して表示可能にします。
    2. JFrame を再検証します。

setVisible(true)あなたのためにこれらをしてください。ただし、 を表示したくない場合は、とJFrameを使用できます。addNotifyrevalidate

例:

import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Test {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame();
                Container c = f.getContentPane();
                f.setSize(800, 600);
                System.out.println(c.getSize()); // width=0,height=0
                f.addNotify();
                f.revalidate();
                System.out.println(c.getSize()); // width=784,height=562
                f.setVisible(true);
                System.out.println(c.getSize()); // width=784,height=562
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            }
        });
    }
}
于 2013-07-04T08:24:24.960 に答える