0

私はすでにこの質問をしたことを知っていますが、サンプル コードの誤りと実際に質問をしなかったため、最初の数時間が経過し、新しいコメントや古い質問への回答を得ることがほとんどありません。オリジナルは削除されました。

このコードを使用して、以下のウィンドウを生成しました (正確には、オレンジ色の四角形内にあるすべてのもの)。

        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        setBackground(Color.YELLOW);
        setFixedSize(new Dimension(LayoutConstants.PAGE_WIDTH + 2*LayoutConstants.HALF_SPACE_BETWEEN_PAGES, LayoutConstants.PAGE_HEIGHT + 2*LayoutConstants.HALF_SPACE_BETWEEN_PAGES));
        setBorder(BorderFactory.createLineBorder(Color.ORANGE, LayoutConstants.HALF_SPACE_BETWEEN_PAGES));

        JPanelSize header = new JPanelSize();
        header.setBackground(Color.RED);
        header.setSize(new Dimension(LayoutConstants.PAGE_WIDTH, LayoutConstants.HEADER_HEIGHT));
        add(header);

        elementContainer = new JPanelSize();
        elementContainer.setLayout(new BoxLayout(elementContainer, BoxLayout.Y_AXIS));
        elementContainer.setBackground(Color.GREEN);
        elementContainer.setFixedSize(new Dimension(LayoutConstants.CONTENT_WIDTH, LayoutConstants.CONTENT_HEIGHT));        
        add(elementContainer, BorderLayout.CENTER);


        JPanelSize footer = new JPanelSize();
        footer.setBackground(Color.MAGENTA);
        footer.setFixedSize(new Dimension(LayoutConstants.PAGE_WIDTH, LayoutConstants.FOOTER_HEIGHT));
        add(footer);

これは JPanelSize クラスであり、私の人生を非常に簡素化します。

import java.awt.Dimension;

import javax.swing.JPanel;

public class JPanelSize extends JPanel
{
    private static final long serialVersionUID = 1L;

    public void setFixedSize(Dimension size)
    {
        setMinimumSize(size);
        setPreferredSize(size);
        setMaximumSize(size);
    }
}

そして、これは結果です:

ここに画像の説明を入力

ヘッダーとフッターは黄色の領域を埋め、緑色の JPanel は中央に配置する必要があります。高さは全然大丈夫です。

ここでは A4 をシミュレートしているため、set(...)Size() メソッドをオーバーライドしています。

私は何を間違っていますか?

4

2 に答える 2

3

「私は何を間違っていますか?」単一のレイアウトを使用してすべてを達成します。BorderLayout はヘッダーとフッターの要件を満たします。その後、本文に BoxLayout を引き続き使用できます。

これは一般に複合レイアウトとして知られており、複雑なレイアウト要件を扱う場合に非常に役立ちます。

于 2013-08-08T22:39:38.237 に答える