如何在 Java 中设置 GridBagLayout 的列宽

How to set column width for GridBagLayout in Java

我想创建一个与附图类似的布局。它有 2 个面板。左侧 Panel 的最小宽度为 500px,当 JFrame 调整大小时调整大小。右侧面板的宽度固定为 120px。它们之间有一个 10px 的填充。

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

    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("-------------");

  • 如果 gbc.weightx = 1f; 用于第一个约束,0f 用于第二个约束,则有效。
  • 同时将 txtArea = new JTextArea(); 更改为 txtArea = new JTextArea(15,20); 之类的内容以建议初始大小。
  • 为了美观和易用性,将文本区域包裹在滚动窗格中。
  • "a 10px padding between them" - 为此使用 GridBagConstraintsInsets

以下是实施这些建议后的样子。

..并拉得更宽。