记忆游戏失败

时间:2014-02-12 22:42:55

标签: java swing user-interface action

我正在尝试制作一个简单的记忆游戏。但我不知道如何设置actionPerformed按下1按钮的位置,然后程序等待再次点击并检查按钮是否相同? 现在所有代码都会为[x]创建随机点(在其他方法中设置),按下按钮时按钮会变为图像以校正图像

public void actionPerformed(ActionEvent a) {

    for(int x = 0; x < 16; x++) {
        if(a.getSource() == but[x]) {
            but[x].setIcon(imageicon[x / 2]); //Another method creates the imageicons

        } 

        frame.repaint();
    }

}

1 个答案:

答案 0 :(得分:2)

  1. 如果您所做的只是更改JLabel或JButton的图标,则无需致电repaint()
  2. 你需要你的ActionListener包含一个变量,也许是一个Icon变量,它保存最后一个按钮的Icon的值,让我们称之为lastIcon。它最初的值为null
  3. 按下第一个按钮时,会显示其图标,它会检查lastIcon的值。如果为null,则表示这是第一个按钮,并且lastIcon变量被赋予其图标值。
  4. 按下第二个按钮时,会显示其图标,并将其与最后一个按钮进行对比。如果相等,它会保持两个按钮显示。如果不相等,它会启动一个Swing Timer,将Icons重置为默认值。无论哪种方式,它都将lastIcon设置为null。
  5. 请注意,您想检查一个按钮==另一个按钮。您想要比较它们的图标,或者有一个与您的视图不同的单独模型类,并检查模型中的两个按钮是否相同。