0

サイズの異なる 2 つの異なる JPanel を追加する必要がある JFrame があります。私はBorderLayoutを使用しています.2つのパネル(サイズはすでに設定されています)が完全に収まるように十分なスペースがあるようにフレームを設定しています。ただし、実行すると、右側の 2 番目のパネルが横にいっぱいに押しつぶされて、非常に薄くなります。

public class YourCraft extends JFrame {

public Game() {

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(606, 500);

    setTitle("YourCraft");
    setResizable(false);
    setVisible(true);
    setBackground(Color.BLACK);
}

public static void main(String[] args) {
    Game main = new Game();

    Board mainBoard = new Board();
    Stats mainStats = new Stats();
    main.getContentPane().add(BorderLayout.CENTER,mainBoard);
    main.getContentPane().add(BorderLayout.EAST,mainStats);
}
4

2 に答える 2

3

JPanel をオーバーライドする場合は、setPreferredSize または getPreferredSize を使用して JPanel に優先サイズを与えることに同意しますが、同様に重要なのは、JFrame のサイズを設定しないで、そのコンポーネントに最適なサイズを設定させることです。Snicolas が言及しているように、 pack() メソッドがこれを処理します。

于 2011-06-12T22:57:02.883 に答える
3

コンポーネントに優先サイズを指定します。setPreferredSize を使用して寸法を指定します。

次に、JFrame で setVisible( true ) を呼び出す前に、pack() メソッドを使用します。JFrame をパックし、すべてのコンポーネントの優先サイズが尊重されるように十分なスペースを確保します (可能な場合)。

よろしく、 ステファン

于 2011-06-12T22:42:56.147 に答える