JFrame のサイズを変更すると、テーブル (より具体的には scrollPane) が小さな四角形になります (同じままですが、高さは 5 ~ 10 ピクセルに近くなります)。
また、JFrame には特定の高さのしきい値があることに気付きました。JFrame の高さがこれを下回ると、すべての GridBagLayouts が正しく動作します (たとえば、すべてのパネルの幅と高さが正しくなります)。高さがこのしきい値よりも高い場合、JFrame の高さを減らすと、両方の右側のパネルの幅が追加され、rightTopPanel は rightBottomPanel よりもはるかに速く高さが失われます。
しきい値は、rightTopPanel が最小の高さ (約 5 ~ 10 ピクセル) になるポイントのようです。
JPanel panel = new JPanel(new GridBagLayout());
JPanel rightTopPanel = new JPanel(new GridBagLayout());
panel.add(rightTopPanel, Helper.createGridBagConstraints(1, 0, 1, 1, 0.5, 0.5, GridBagConstraints.BOTH));
JPanel rightBottomPanel = new JPanel(new GridLayout(1, 1));
tableModel = new DefaultTableModel(0, 2);
JTable table = new JTable(tableModel);
JScrollPane scrollPane = new JScrollPane(table);
rightBottomPanel.add(scrollPane);
panel.add(rightBottomPanel, Helper.createGridBagConstraints(1, 1, 1, 1, 0.5, 0.5, GridBagConstraints.BOTH));
JPanel leftPanel = new JPanel();
panel.add(leftPanel, Helper.createGridBagConstraints(0, 0, 1, 2, 0.5, 1.0));
add(panel);
Helper.createGridBagConstraints は、GridBagConstraints を作成するための単なるヘルパー メソッドであり、多数の「オプション」パラメーターがあります。
GridBagConstraints createGridBagConstraints(int gridx, int gridy)
GridBagConstraints createGridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight)
GridBagConstraints createGridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty)
GridBagConstraints createGridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int fill)
編集:これは JScrollPane 内の問題のようです。追加しないと、残りのパネルのサイズが正しく変更されます。
編集2:これまでのところ、私の問題が何であるかを誰も理解していないため、スクリーンショットを次に示します: http://img155.imageshack.us/img155/8847/badgridbaglayout1.png