我不知道为什么我的网格覆盖了我的按钮,我试图解决它,但我不能。谁能告诉我为什么?是不是因为我把所有的都放在BorderLayout里了?任何人都可以将播放按钮添加到其右侧吗?
public game() {
make();
JPanel p = new JPanel();
frame.setLayout(new BorderLayout());
resetButton = new JButton("Play");
p.add(playButton, BorderLayout.EAST);
frame.add(p);
}
public void make(){
frame = new JFrame("Gamer");
frame.setTitle("Gamer");
JPanel m = new JPanel(new GridLayout(9,9));
for(int i = 0; i < 9; i++) {
for(int j = 0; j < 9; j++) {
grids[i][j] = new JButton();
m.add(grids[i][j]);
}
}
frame.add(m, BorderLayout.CENTER);
frame.setResizable(false);
frame.setSize(width, heigth);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
最佳答案
本质上,您将 m
(网格)和按钮面板添加到 BorderLayout
的 CENTER
位置
这里
frame.add(m, BorderLayout.CENTER);
和
p.add(playButton, BorderLayout.EAST);
frame.add(p); // adding to the CENTER position
BorderLayout 中的默认位置是 CENTER
位置。只需使用 frame.add(p, BorderLayout.EAST);
,您就可以将按钮移动到右侧...
请注意,使用 setRessized
会出现问题,它会更改框架的边框大小,更改框架内容的可用空间,请始终在定义框架的大小之前调用此方法,这会导致应该用pack
如果可以的话,您确实希望避免在框架可见后修改其内容,因为这不仅会影响内容可能需要的空间,而且还需要您重新验证
和重新绘制
容器。
更好的是,创建框架,然后将其传递给 game
和 make
方法...
关于java - JPanel 中的 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538317/