如何使按钮高度更大,右列和左列的宽度相同。我尝试了weightx
weighty
heightx
heighty
,但它无效。提前致谢。这是我的代码:
Container contentPane = getContentPane();
contentPane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(20,20,20,20);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1.0;
JButton back = new JButton("Back to previous menu");
c.gridx = 1;
c.gridy = 0;
contentPane.add(back,c);
JLabel welcome = new JLabel("Hi secretary, please select an action");
c.gridx = 0;
c.gridy = 0;
contentPane.add(welcome,c);
有更多的按钮定义代码,但它只是将自己定位在布局上。
答案 0 :(得分:0)
不要设置按钮的首选大小。对于使用与您的桌面字体不同的桌面字体的用户,这将导致严重的视觉问题。
您应该让按钮定义自己的首选大小。增加首选高度的最佳方法是GridBagConstraints.ipady:
c.ipady = 24;
另一种选择是使用JButton.setMargin为每个按钮增加一个余量:
Insets margin = new Insets(12, 0, 12, 0);
back.setMargin(margin);
welcome.setMargin(margin);
迫使左侧和右侧具有相等的宽度更加困难。 GridBagLayout无法做到这一点。 weightx
字段仅在窗口宽于需要时才确定额外空间的分布,以便容纳所有子组件的首选大小。如果列的宽度不同,则使用weightx
分配额外空格将不会使其宽度相等。
就个人而言,我认为强迫双方拥有相同的宽度会增加任何价值。如果你坚持左右两侧的宽度完全相等,你将不得不放弃使用GridBagLayout。 SpringLayout可以做到,但很难使用。如果你愿意引入第三方依赖,那么像MiG Layout这样的东西也许可以做到。