我正在尝试创建一个记忆游戏。当第一个和第二个按钮都有相同的图像时,我将它们的图像设置为null。还要关联一个值(即图像)我创建了类UsingJButton
扩展JButton
类
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
if (e.getButton() == MouseEvent.BUTTON1) {
if (game.timePassed == 0) {
game.clock.start();
}
game.openButton(this);
game.checkIfWon();
}
}
这段代码在另一个类中调用openButton()
方法。
public void openButton(UsingJButton b) {
// TODO Auto-generated method stub
if (b.isEnabled() && !button1) {
b.setIcon(new ImageIcon(upperImages[b.value].getImage().getScaledInstance(50, 50,
java.awt.Image.SCALE_SMOOTH)));
b1 = new UsingJButton(b.row, b.col, this);
b1 = b;
button1 = true;
} else if (b.isEnabled() && button1 && !button2 && ((b1.row != b.row) || (b1.col != b.col))) {
synchronized (b) {
b.setIcon(new ImageIcon(upperImages[b.value].getImage().getScaledInstance(50, 50,
java.awt.Image.SCALE_SMOOTH)));
button2 = true;
try {
b.wait(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if (button1 && button2) {
if (b1.value == b.value) {
b1.setVisible(false);
b.setVisible(false);
flagCount += 1;
paint();
repaint();
} else {
b1.setIcon(null);
b.setIcon(null);
}
button1 = button2 = false;
}
}
我关注的原因是,在这个片段中,
synchronized (b) {
b.setIcon(new ImageIcon(upperImages[b.value].getImage().getScaledInstance(50, 50,
java.awt.Image.SCALE_SMOOTH)));
button2 = true;
try {
b.wait(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
当我获得按钮b
上的锁定时,它会等待2秒,但不会显示按钮上的图标。我已在此类中声明了我的ImageIcon[]
数组(在定义openButton()
的类中),而我的按钮属于UsingJButtons
类。
按钮上的图标应显示为游戏的重要部分。