[英]gridheight doesn't affect my buttons
我是Java应用程序的新手,我正在尝试创建一个窗口,该窗口在底部具有扩展大小的行中连续3个按钮。 但是gridheight对我的按钮没有任何影响。 gridwidth工作正常。
您能给我有关我做错了什么的反馈吗? 我想我没有正确理解一些东西。
贝娄是我的代码和输出窗口。
提前感谢!
private JButton button1;
private JButton button2;
private JButton button3;
public SessionTasksPage()
{
JPanel p1=new JPanel(new GridBagLayout());
JPanel p2=new JPanel();
button1 = new JButton("b1");
button2 = new JButton("b2");
button3 = new JButton("b3");
GridBagConstraints gbc =new GridBagConstraints();
//gbc.insets = new Insets(1,1,1,1);
gbc.gridheight = 5;
gbc.gridwidth = 5;
gbc.weightx=15;
gbc.weighty=15;
gbc.fill = GridBagConstraints.BOTH;
p1.add(button2,gbc);
p1.add(button3,gbc);
p1.add(button1,gbc);
add(p1,BorderLayout.SOUTH);
add(p2,BorderLayout.NORTH);
EventHandler1 event1 = new EventHandler1();
button1.addActionListener(event1);
//window terminate setting
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//window size
setSize(600,400);
//pack();
//make window visible
setVisible(true);
//window title
setTitle("HCI-Projet");
//voice command
//new AePlayerWave("bin/sounds/login.wav").start();
}
public class EventHandler1 implements ActionListener
{
public void actionPerformed(ActionEvent event1) {
System.exit(0);
}
}
问题出在主面板的布局上。 您在该面板上使用的BorderLayout
具有一个较大的中央区域( BorderLayout.CENTER
)和许多较小的区域(例如NORTH
和SOUTH
)。 布局将迫使除CENTER
以外的任何其他东西占用尽可能少的空间,并最大化CENTER
区域中的剩余空间(在这种情况下为空)。 既然你加入p1
的南部,它不断的垂直分量p1
小,因为它可以。 如果将p1
添加为CENTER
,它将解决您的问题。
附带说明一下,如果网格中的所有行/列都具有相同的高度/宽度,则使用GridLayout
可能会比GridBagLayout
容易得多。
问题是JPanel p1。 面板的空间由标准布局创建,如果您仅使用add(p1,BorderLayout.SOUTH);
,它不会改变。
要使其可见,可以使用Border: p1.setBorder(BorderFactory.createLineBorder(Color.black));
使用其他布局或GUI构建器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.