【问题标题】:How to set column width for GridBagLayout in Java如何在 Java 中为 GridBagLayout 设置列宽
【发布时间】:2017-10-18 07:04:54
【问题描述】:

我想创建一个看起来像所附图片的布局。它有 2 个面板。左侧 Panel 的最小宽度为 500px,在调整 JFrame 大小时调整大小。右侧面板的宽度固定为 120 像素。并且它们之间有一个 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("-------------");

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖minimal reproducible exampleShort, Self Contained, Correct Example
  • BTW - 如果gbc.weightx = 1f; 用于第一个约束,0f 用于第二个约束,它似乎工作。还将txtArea = new JTextArea(); 更改为txtArea = new JTextArea(15,20); 以建议初始大小,并将其包装在滚动窗格中以提高美观和可用性。 “它们之间有 10px 的填充” - 为此使用 InsetsGridBagConstraints

标签: java swing layout-manager gridbaglayout


【解决方案1】:
  • 如果gbc.weightx = 1f; 用于第一个约束,0f 用于第二个约束,它就可以工作。
  • 还将txtArea = new JTextArea(); 更改为txtArea = new JTextArea(15,20); 之类的内容以建议初始大小。
  • 将文本区域包裹在滚动窗格中,以提高美观和可用性。
  • “它们之间有 10 像素的填充” - 为此使用 GridBagConstraintsInsets

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

..并拉得更宽。

【讨论】:

    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2010-10-31
    • 2016-10-14
    • 1970-01-01
    相关资源
    最近更新 更多