Java JPanel中的JButton
我不知道为什么我的网格覆盖了我的按钮,我试图解决它,但我不能。谁能告诉我为什么?是因为我把所有的东西都放在了一起?有人能再按一下右边的播放按钮吗Java JPanel中的JButton,java,swing,Java,Swing,我不知道为什么我的网格覆盖了我的按钮,我试图解决它,但我不能。谁能告诉我为什么?是因为我把所有的东西都放在了一起?有人能再按一下右边的播放按钮吗 public game() { make(); JPanel p = new JPanel(); frame.setLayout(new BorderLayout()); resetButton = new JButton("Play"); p.add(playButto
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);
}
公共游戏(){
make();
JPanel p=新的JPanel();
frame.setLayout(新的BorderLayout());
resetButton=新的JButton(“播放”);
p、 添加(播放按钮,边框布局。东);
框架。添加(p);
}
公开宣布无效{
frame=新JFrame(“玩家”);
frame.setTitle(“玩家”);
JPanel m=新JPanel(新网格布局(9,9));
对于(int i=0;i<9;i++){
对于(int j=0;j<9;j++){
grids[i][j]=新的JButton();
m、 添加(网格[i][j]);
}
}
框架。添加(m,边框布局。中心);
frame.setresizeable(false);
框架尺寸(宽度、高度);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
您使用的是框架。添加(p)-这可能不会将面板添加到框架的正确区域。
试一试
或者别的什么?i、 e.不将覆盖网格的居中
还请注意,尚未设置面板的布局,因此默认情况下,它将是一个FlowLayout
正如程序员所说,不需要设置框架的布局-尤其是在添加网格之后
最后,最好只将面板添加到框架的getContentPane()
。您使用的是frame.add(p)
-这可能不会将面板添加到框架的正确区域。
试一试
或者别的什么?i、 e.不将覆盖网格的居中
还请注意,尚未设置面板的布局,因此默认情况下,它将是一个FlowLayout
正如程序员所说,不需要设置框架的布局-尤其是在添加网格之后
最后,最好只将面板添加到框架的getContentPane()
。您使用的是frame.add(p)
-这可能不会将面板添加到框架的正确区域。
试一试
或者别的什么?i、 e.不将覆盖网格的居中
还请注意,尚未设置面板的布局,因此默认情况下,它将是一个FlowLayout
正如程序员所说,不需要设置框架的布局-尤其是在添加网格之后
最后,最好只将面板添加到框架的getContentPane()
。您使用的是frame.add(p)
-这可能不会将面板添加到框架的正确区域。
试一试
或者别的什么?i、 e.不将覆盖网格的居中
还请注意,尚未设置面板的布局,因此默认情况下,它将是一个FlowLayout
正如程序员所说,不需要设置框架的布局-尤其是在添加网格之后
最后,最好只添加到框架的getContentPane()
。好吧,这是一个大小问题。从字面上说,你的网格和/或按钮太大了,不能放在你想要的地方,所以它们会漏到下一个空间。(即BorderLayout.EAST将泄漏到BorderLayout.CENTER)
尝试将JFrame放大,同时尝试设置JPanel的首选大小,以进一步确保构建良好的窗口。好吧,这是一个大小问题。从字面上说,你的网格和/或按钮太大了,不能放在你想要的地方,所以它们会漏到下一个空间。(即BorderLayout.EAST将泄漏到BorderLayout.CENTER)
尝试将JFrame放大,同时尝试设置JPanel的首选大小,以进一步确保构建良好的窗口。好吧,这是一个大小问题。从字面上说,你的网格和/或按钮太大了,不能放在你想要的地方,所以它们会漏到下一个空间。(即BorderLayout.EAST将泄漏到BorderLayout.CENTER)
尝试将JFrame放大,同时尝试设置JPanel的首选大小,以进一步确保构建良好的窗口。好吧,这是一个大小问题。从字面上说,你的网格和/或按钮太大了,不能放在你想要的地方,所以它们会漏到下一个空间。(即BorderLayout.EAST将泄漏到BorderLayout.CENTER)
尝试将JFrame放大,并尝试设置JPanel的首选大小,以进一步确保构建良好的窗口。尝试使用frame.add(p,BorderLayout.SOUTH)
这里有一个例子
守则:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class game {
JFrame frame;
JButton grids[][] = new JButton[9][9];
public game() {
make();
JPanel p = new JPanel();
JButton resetButton = new JButton("reset");
JButton playButton = new JButton("Play");
p.add(playButton);
p.add(resetButton);
frame.add(p,BorderLayout.SOUTH);
frame.setVisible(true);
}
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.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
game gameObj = new game();
}
}
导入java.awt.BorderLayout;
导入java.awt.GridLayout;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
公开课游戏{
JFrame框架;
JButton grids[][]=新JButton[9][9];
公共游戏(){
make();
JPanel p=新的JPanel();
JButton resetButton=新JButton(“重置”);
JButton playButton=新JButton(“播放”);
p、 添加(播放按钮);
p、 添加(重置按钮);
框架。添加(p,边界布局。南部);
frame.setVisible(true);
}
公开宣布无效{
frame=新JFrame(“玩家”);
frame.setTitle(“玩家”);
JPanel m=新JPanel(新网格布局(9,9));
对于(int i=0;i<9;i++){
对于(int j=0;j<9;j++){
grids[i][j]=新的JButton();
m、 添加(网格[i][j]);
}
}
框架。添加(m,边框布局。中心);
frame.setresizeable(false);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
公共静态void main(字符串[]args){
game gameObj=新游戏();
}
}
其效果是:
除此之外,类名的第一个字母应该大写。尝试使用frame.add(p,BorderLayout.SOUTH)
这里有一个例子
守则:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class game {
JFrame frame;
JButton grids[][] = new JButton[9][9];
public game() {
make();
JPanel p = new JPanel();
JButton resetButton = new JButton("reset");
JButton playButton = new JButton("Play");
p.add(playButton);
p.add(resetButton);
frame.add(p,BorderLayout.SOUTH);
frame.setVisible(true);
}
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.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
game gameObj = new game();
}
}
导入java.awt.BorderLayout;
导入java.awt.GridLayout;
导入javax.swing.JButton;
感应电动机
![enter image description here][1]import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class WelcomActivity {
JFrame frame;
JButton resetButton;
JButton playButton;
JButton[][] grids = new JButton[9][9];
int width = 600;
int heigth = 400;
public void game() {
make();
JPanel p = new JPanel();
playButton = new JButton("Play");
resetButton = new JButton("Reset");
p.add(playButton);
p.add(resetButton);
frame.getContentPane().add(p, BorderLayout.EAST);
}
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.setResizable(false);
frame.setSize(width, heigth);
frame.getContentPane().setLayout(new BorderLayout() );
frame.getContentPane().add(m, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args){
new WelcomActivity().game();
}
}
frame.add(m, BorderLayout.CENTER);
p.add(playButton, BorderLayout.EAST);
frame.add(p); // adding to the CENTER position