JavaSwing中GridBagLayout布局组件大小不随窗口大小改变问题
程序员文章站
2022-05-22 18:59:56
...
已解决:
在GridzhongBagLayout布局中组件大小是固定的,无法随着窗口大小而改变。通常其窗体大小是由最上面一行的组件长度决定的。
GridzhongBagLayout布局中是依靠GridBagConstraints来设置组件的位置的。
其中GridBagConstraints有两个属性weightx 与gridheight 默认表示不改变组件大小即组件大小不随窗口变化而变化。将其设置为1即可。同时设置其fillGridBagConstraints.BOTH意思是填充剩余区域。如此即可实现改变窗口大小最上层组件改变下面的组件也跟着改变大小的需求。
比如改变一个最上层的JToolBar的大小:
JToolBar jToolBar = new JToolBar();
jToolBar.setOrientation(SwingConstants.HORIZONTAL);
jToolBar.setFloatable(false);
jToolBar.add(new JButton("数据编辑页"));
GridBagConstraints c = new GridBagConstraints();
c.gridwidth = GridBagConstraints.REMAINDER;
c.fill = GridBagConstraints.BOTH;
c.weightx = 1;
c.gridheight = 1;
gridBag.addLayoutComponent(jToolBar, c);
结果展示: