如何在Java中为GridBagLayout设置列宽

时间:2017-05-18 12:47:26

标签: java swing layout-manager gridbaglayout

我想创建一个看起来像附图的布局。它有2个面板。最小宽度的左侧面板为500px,调整JFrame大小时调整大小。右侧面板的固定宽度为120px。并且它们之间有10px的填充。

我尝试了GridBagLayout,但似乎没有按预期工作。请帮忙。谢谢。

enter image description here

    JPanel leftBox;
    JPanel rightBox;
    JButton btnSave;
    JButton btnRefresh;
    JTextArea txtArea;

    leftBox = new JPanel();
    rightBox = new JPanel();

    btnSave = new JButton("Save");
    btnRefresh = new JButton("Refresh");

    txtArea = new JTextArea();
    txtArea.setFont(new Font("Consolas", Font.BOLD, 14));

    leftBox.setLayout(new BoxLayout(leftBox, BoxLayout.Y_AXIS));
    leftBox.add(txtArea);

    rightBox.setLayout(new BoxLayout(rightBox, BoxLayout.Y_AXIS));
    rightBox.add(btnSave);
    rightBox.add(btnRefresh);

    this.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();

    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.fill  = GridBagConstraints.BOTH;
    this.add(leftBox, gbc);

    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.fill  = GridBagConstraints.BOTH;
    this.add(rightBox, gbc);

    txtArea.append("-------------");

enter image description here

1 个答案:

答案 0 :(得分:1)

  • 如果gbc.weightx = 1f;用于第一个约束,0f用于第二个约束,则它有效。
  • 同时将txtArea = new JTextArea();更改为txtArea = new JTextArea(15,20);以建议初始尺寸。
  • 将文本区域包裹在滚动窗格中,以获得美观​​和实用性。
  • “他们之间的10px填充” - 使用Insets的{​​{1}}。

以下是实施这些建议后的看法。

enter image description here

..并且拖得更宽。

enter image description here