ここでは LayeredPane が最善の策だと思います。ただし、A と B を含めるには 3 番目のパネルが必要です。この 3 番目のパネルは layeredPane であり、パネル A と B は引き続き適切な LayoutManagers を持つことができます。あなたがしなければならないのは、B を A の上に置くことだけです。これを行う方法については、Swing トレイルに非常に多くの例があります。LayoutManager を使用しない配置のチュートリアル。
public class Main {
private JFrame frame = new JFrame();
private JLayeredPane lpane = new JLayeredPane();
private JPanel panelBlue = new JPanel();
private JPanel panelGreen = new JPanel();
public Main()
{
frame.setPreferredSize(new Dimension(600, 400));
frame.setLayout(new BorderLayout());
frame.add(lpane, BorderLayout.CENTER);
lpane.setBounds(0, 0, 600, 400);
panelBlue.setBackground(Color.BLUE);
panelBlue.setBounds(0, 0, 600, 400);
panelBlue.setOpaque(true);
panelGreen.setBackground(Color.GREEN);
panelGreen.setBounds(200, 100, 100, 100);
panelGreen.setOpaque(true);
lpane.add(panelBlue, new Integer(0), 0);
lpane.add(panelGreen, new Integer(1), 0);
frame.pack();
frame.setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Main();
}
}
setBounds を使用して、レイヤード ペイン内にパネルを配置し、サイズを設定します。
元の投稿への変更を反映するように編集
親コンテナーのサイズが変更されたときにそれを検出するコンポーネント リスナーを追加し、パネル A と B の境界を動的に変更する必要があります。