JLabel labels[][] = new JLabel[10][10]; //create a 10*10 matrix
GameModel game=new GameModel(10); //10 is size
//this nested for is to check if numbers exist in matrix
for(int j = 0; j < game.getSize(); j++){
for (int i =0; i < game.getSize(); i++){
System.out.println(game.getDot()[j][i]);
}
}
它打印正确,
005
011
023
035
040
052
063
072
084
092
105
113
121
133
143
152
163
174
185
193........., a total of 100 numbers(three numbers represent x-axis,y-axis,color respectively)
//this nested for is to create labels and add picture to lables
for(int j = 0; j < game.getSize(); j++){//getSize,which is 10
for (int i = 0; i < game.getSize(); i++)
{
labels[j][i] = new JLabel();
P1.add(labels[j][i]); //JPanel p1;
// getcolor(int x-axis,int y-axis)returns the color of a given dot,
//which is the last number.for example,the color of "011" is 1, the color of "035" is 5
if(game.getColor(j,i)==0)//compare the last number
labels[j][i].setIcon(new ImageIcon("ball0.png"));
else if(game.getColor(j,i)==1)
labels[j][i].setIcon(new ImageIcon("ball1.png"));
else if(game.getColor(j,i)==2)
labels[j][i].setIcon(new ImageIcon("ball2.png"));
else if(game.getColor(j,i)==3)
labels[j][i].setIcon(new ImageIcon("ball3.png"));
else if(game.getColor(j,i)==4)
labels[j][i].setIcon(new ImageIcon("ball4.png"));
else if(game.getColor(j,i)==5)
labels[j][i].setIcon(new ImageIcon("ball5.png"));
}
}
f.add(P1);//JFrame f = new JFrame("hello");
但是当我运行它时,它没有给我正确的结果,一些点消失了:
答案 0 :(得分:1)
没有真正回答你的问题(因为我们没有足够的信息来解决你的问题),但这里有一些调试/编码提示:
检查数字是否存在的循环无法证明。该循环使用getDot(...)
方法。构建标签的代码使用getColor(...)
方法。 getColor(...)
方法可能无法达到您的预期效果。
不要创建100个图标。图标可以由标签共享,因此您只需创建6个图标。然后可以简化循环中用于创建图标的逻辑。
变量名称不应以大写字母开头。
所以你的代码看起来像这样:
Icon[] icons = new Icon[6];
icons[0] = new ImageIcon("ball0.png");
icons[1] = new ImageIcon("ball1.png");
...
for(int j = 0; j < game.getSize(); j++)
{
for (int i = 0; i < game.getSize(); i++)
{
// add your debug code here
int dot = game.getDot(...);
int color = game.getColor(...);
System.out.println(dot + " : " + color);
JLabel label = new JLabel();
label.setIcon( icons[color] );
labels[j][i] = label;
p1.add(label);
}
}
现在,您的调试代码会告诉您在实际创建标签时是否获得了正确的值,如果颜色索引不符合您的预期,您将收到错误。