繁体   English   中英

Java-调整GridBagLayout中的按钮大小

[英]Java - Resize buttons in GridBagLayout

我如何才能使按钮的高度稍大一些,并且左右列的宽度应相同。 我已经试过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);

按钮定义的代码更多,但只是将它们放置在布局上。

图片

不要设置按钮的首选大小。 对于桌面字体与您的字体不同的用户,这将导致严重的视觉问题。

您应该让按钮定义自己的首选大小。 增加首选高度的最佳方法是使用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之类的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM