有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

GridBagLayout中的awt Java调整按钮

我怎样才能使按钮的高度大一点,左右栏的宽度相同。我试过weightx{}{}{},但没有成功。提前谢谢。这是我的密码:

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);

有更多的按钮代码定义,但它只是定位自己的布局

Picture


共 (1) 个答案

  1. # 1 楼答案

    不要设置按钮的首选大小。这将给桌面字体与您不同的用户带来严重的视觉问题

    您应该让按钮定义自己的首选大小。增加首选高度的最佳方法是使用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这样的东西可能可以做到这一点