如何在 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" - 为此使用
GridBagConstraints
的 Insets
。
以下是实施这些建议后的样子。
..并拉得更宽。
我想创建一个与附图类似的布局。它有 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" - 为此使用
GridBagConstraints
的Insets
。
以下是实施这些建议后的样子。
..并拉得更宽。