Java使用GridLayout的问题
我想要一个 3x3 网格布局,结构如下:
_ _ _ _ _ _ _ _ _ _ _ _
| Label |
| Button Button Button |
| TextArea |
|_ _ _ _ _ _ _ _ _ _ _ |
但布局已损坏。
public static void main(String[] args){
JFrame frame = new JFrame("title");
frame.setSize(400,500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout = new GridLayout(3,3);
JPanel pan0 = new JPanel();
JPanel pan1 = new JPanel();
JPanel pan2 = new JPanel();
pan0.setLayout(layout);
GridBagConstraints c = new GridBagConstraints();
JLabel title = new JLabel("title");
title.setFont(new Font("Serif", Font.BOLD, 40));
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 3;
pan0.add(title, c);
JButton b1 = new JButton("button1");
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 1;
pan0.add(b1, c);
JButton b2 = new JButton("button2");
c.gridx = 1;
c.gridy = 2;
c.gridwidth = 1;
pan0.add(b2, c);
JButton b3 = new JButton("button3");
c.gridx = 2;
c.gridy = 3;
c.gridwidth = 1;
pan0.add(b3, c);
TextArea text1 = new TextArea(15,40);
c.gridx = 2;
c.gridy = 0;
c.gridwidth = 3;
pan0.add(text1, c);
frame.add(pan0);
frame.pack();
}
}
I want to have a 3x3 grid layout structured like this:
_ _ _ _ _ _ _ _ _ _ _ _
| Label |
| Button Button Button |
| TextArea |
|_ _ _ _ _ _ _ _ _ _ _ |
But the layout is broken.
public static void main(String[] args){
JFrame frame = new JFrame("title");
frame.setSize(400,500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout = new GridLayout(3,3);
JPanel pan0 = new JPanel();
JPanel pan1 = new JPanel();
JPanel pan2 = new JPanel();
pan0.setLayout(layout);
GridBagConstraints c = new GridBagConstraints();
JLabel title = new JLabel("title");
title.setFont(new Font("Serif", Font.BOLD, 40));
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 3;
pan0.add(title, c);
JButton b1 = new JButton("button1");
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 1;
pan0.add(b1, c);
JButton b2 = new JButton("button2");
c.gridx = 1;
c.gridy = 2;
c.gridwidth = 1;
pan0.add(b2, c);
JButton b3 = new JButton("button3");
c.gridx = 2;
c.gridy = 3;
c.gridwidth = 1;
pan0.add(b3, c);
TextArea text1 = new TextArea(15,40);
c.gridx = 2;
c.gridy = 0;
c.gridwidth = 3;
pan0.add(text1, c);
frame.add(pan0);
frame.pack();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您正在将
GridBagConstraint
与GridLayout
一起使用,而不是使用位于同一包中的
GridBagLayout
you are using a
GridBagConstraint
with aGridLayout
instead use a
GridBagLayout
it's in the same pakage为了添加棘轮的答案,你还有一些网格位置不正确。试试这个
To add to ratchet's answer, you also have some grid positions incorrect. Try this
您将 GridLayout 与 GridBagLayout 混淆了,但我自己会使用 BoxLayout 进行垂直定位,然后可能使用 GridLayout 作为按钮。例如,
You're confusing GridLayout with GridBagLayout, but I'd use a BoxLayout for the vertical positioning myself, and then perhaps a GridLayout for the buttons. For e.g.,