私はすでにこの質問をしたことを知っていますが、サンプル コードの誤りと実際に質問をしなかったため、最初の数時間が経過し、新しいコメントや古い質問への回答を得ることがほとんどありません。オリジナルは削除されました。
このコードを使用して、以下のウィンドウを生成しました (正確には、オレンジ色の四角形内にあるすべてのもの)。
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() メソッドをオーバーライドしています。
私は何を間違っていますか?