我正在编写一个程序,它将有一个9x9按钮,每个按钮从左上角开始向右移动1到81
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MS extends JFrame implements ActionListener {
static JFrame bframe;
static JPanel p;
public MS() {
p = new JPanel(new GridLayout(9,9));
private static JButton[][] jgo = new JButton[9][9];
int count = 1;
for(int row=0; row < 9; row++)
for(int col=0; col < col; col++) {
jgo[row][col] = new JButton("%d",count);
p.add(jgo[row][col]);
count++;
}
}
public static void main(String[] args) {
bframe=new MS(); //CREATE me and
bframe.add(p); //add the JPanel
bframe.setSize(810,810);
bframe.setLocation(0,0); //where my upper left hand corner goes
bframe.setVisible(true); //I start out invisible
bframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //need this for the window manager
}
}
我的错误发生在我的构造函数中,它有关于如何创建按钮和设置值的操作。
答案 0 :(得分:3)
JButton
没有JButton(String, int)
形式的构造函数用于格式化目的,您可能希望这样做:
new JButton(Integer.toString(count))
而不是
new JButton("%d",count)
附注:
您不能在构造函数中使用private
关键字:
private static JButton[][] jgo = new JButton[9][9];
^
此行将立即退出:
for (int col = 0; col < col; col++) {
因为col < col
将评估为true
,内部循环将不会被执行。
此语句只能在类块中有效。
静态变量通常被认为是设计不佳。变量bframe
和p
可用于本地范围。
答案 1 :(得分:3)
在这里,您将获得JButton类
的构造函数列表JButton()
Creates a button with no set text or icon.
JButton(Action a)
Creates a button where properties are taken from the Action supplied.
JButton(Icon icon)
Creates a button with an icon.
JButton(String text)
Creates a button with text.
JButton(String text, Icon icon)
Creates a button with initial text and an icon.
没有任何人喜欢你正在使用的那个。
JButton("%d",count); // JButton(String,int); or JButton(format,int);
相反,您可以使用
JButton(""+count)://JButton(String text)