我正在尝试创建一个按钮数组并将它们添加到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);
}
}
答案 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++)
占了更多的按钮?