GridLayout无法正确显示

时间:2013-08-29 22:27:03

标签: java swing jframe jbutton grid-layout

我正在尝试创建一个按钮数组并将它们添加到GridLayout,但由于某种原因,如果我将其大于约5乘5,则网格无法正确绘制。如果它位于大约7乘7和10乘10,网格没有完成。如果高于此值,则按钮非常宽,并且显示在垂直列中而不是网格中,并且它从屏幕的顶部和底部延伸出来。

我的代码:

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class GUI extends JFrame implements ActionListener {

    JButton[] btns = new JButton[49];

    GUI(String title){
        super(title);
        this.init();
        this.setSize(500, 500);
        this.setVisible(true);
        this.setLocationRelativeTo(null);
    }

    void init() {
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(7, 7));
        for (int btnadder = 0; btnadder < 49; btnadder++) {
            btns[btnadder] = new JButton("");
            panel.add(btns[btnadder]);
            btns[btnadder].setBackground(Color.white);
        }
    this.add(panel);
    }
}

2 个答案:

答案 0 :(得分:1)

为什么不为不扩展内部组件的JFrame设置布局管理器?

除此之外,我不明白这个问题。你想要什么? 7个7x7排列的49个按钮?

此外,我注意到您在this.pack()之前没有使用this.setVisible(true);,并且您没有设置按钮的大小,也没有设置标签。至少尝试new JButton(""+btnadder);

之类的内容

我做了这些修正,现在我的显示器上有一个很好的JFrame。同样,我不确定你的期望。

答案 1 :(得分:1)

如果设置在7到10之间,则更改

for (int btnadder = 0; btnadder < 25; btnadder++)

占了更多的按钮?