swing在Java中使用GridBagLayout
我正在学习如何使用GridBagLayout。我在JFrame中创建了两个按钮。我试着让其中一个占用一个collumn(默认值),另外两个collumn,因此大小是第一个的两倍(我知道我可以使用setPreferredSize实现这一点,但我的目的是学习如何使用gridwidth和gridheight)
有什么问题吗?谢谢
import java.awt.*;
import javax.swing.*;
public class Main extends JFrame {
Main(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500,500);
JPanel panel1 = new JPanel(new GridBagLayout());
JButton b1,b2;
b1 = new JButton("button 1");
b2 = new JButton("button 2");
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 1;
gbc.gridwidth = 1;
panel1.add(b1);
gbc.gridx = 2;
gbc.gridwidth = 2;
panel1.add(b2);
add(panel1);
setVisible(true);
}
public static void main(String[]args){
Main m = new Main();
}
}
# 1 楼答案
尝试以这种方式使用GridBagConstraint,希望这将对您有所帮助
编辑
或者对代码进行如下更改:
# 2 楼答案
问题是GridBagLayout的所有列的宽度都不相同。宽度根据其包含的组件的首选尺寸计算。因此,可以使用3、4或100作为第二个按钮的网格宽度,它不会改变任何东西
您需要使用fillx和weightx来更改按钮的大小调整方式
# 3 楼答案
第二个按钮的宽度与多少列无关
实际上,两个按钮都会被要求提供它们的首选宽度,如果有足够的空间,则宽度将被设置为它们
如果空间较小,则使用最小宽度
如果有额外的空间,它将根据权重比例分布在控件之间
您可以尝试将第一个设置为iPadX=100,将iPadX=200,并将第一个设置为比例iPadX=1,将第二个设置为比例iPadX=2