public class Tester {
public static class Frame extends JFrame {
public Frame() {
// Layout
GridBagLayout layout=new GridBagLayout();
layout.columnWeights=new double[] { 0.5, 0.5 };
layout.rowWeights=new double[] { 1 };
// Frame
setLayout(layout);
setSize(500,500);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// Constraints
GridBagConstraints c=new GridBagConstraints();
c.fill=GridBagConstraints.BOTH;
// Panel 1
JPanel p1=new JPanel();
p1.setBackground(Color.green);
c.gridx=0;
c.gridy=0;
add(p1,c);
// Panel 2
JLabel l1=new JLabel("TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST" +
"TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST");
l1.setBackground(Color.yellow);
c.gridx=1;
c.gridy=0;
add(l1,c);
}
}
public static void main(String[] args) {
new Frame().setVisible(true);
}
}
この場合l1
、スペース全体が必要です。次のように、半分にしたいと思います。
layout.columnWeights=new double[] { 0.5, 0.5 };
フレームのサイズが変更された場合、コンポーネントのサイズも変更されc.fill=GridBagConstraints.BOTH;
ますが、最大 50% のスペースが必要です。