【发布时间】: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 example 或Short, Self Contained, Correct Example。
-
BTW - 如果
gbc.weightx = 1f;用于第一个约束,0f用于第二个约束,它似乎工作。还将txtArea = new JTextArea();更改为txtArea = new JTextArea(15,20);以建议初始大小,并将其包装在滚动窗格中以提高美观和可用性。 “它们之间有 10px 的填充” - 为此使用Insets的GridBagConstraints。
标签: java swing layout-manager gridbaglayout