totalPanel で BorderLayout を使用することを検討してください。PanelA を BorderLayout.PAGE_START 位置に追加し、PanelB を BorderLayout.CENTER 位置に追加します。
レイアウト マネージャーの詳細については、チュートリアルを参照してください:レッスン: コンテナー内のコンポーネントのレイアウト
編集:BorderLayoutを使用したことがわかりましたが、「機能しません」が、コードは表示されません。機能しない理由をさらに微調整するには、コードを示すことを検討してください。
getPreferredSize()
これを機能させるには、JPanels の初期サイズを設定するのに役立つPanelX クラスのオーバーライドを与えることを検討してください。
例えば:
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.*;
public class SimpleGuiLayout {
private static void createAndShowGui() {
JPanel totalPanel = new JPanel(new BorderLayout());
totalPanel.add(new PanelX(800, 200, "Panel A"), BorderLayout.PAGE_START);
totalPanel.add(new PanelX(800, 400, "Panel B"), BorderLayout.CENTER);
JFrame frame = new JFrame("Simple Gui Layout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(totalPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
class PanelX extends JPanel {
private int prefW;
private int prefH;
public PanelX(int prefW, int prefH, String title) {
this.prefW = prefW;
this.prefH = prefH;
setBorder(BorderFactory.createTitledBorder(title));
}
@Override
public Dimension getPreferredSize() {
return new Dimension(prefW, prefH);
}
}
実行すると、次のようになります。
そして、適切にサイズ変更します。