记忆游戏java gui

时间:2018-05-25 09:45:34

标签: java swing actionlistener

我试图在记忆游戏中写一个逻辑,当我点击卡片并且它们不是一对(不同的ID)时,程序应该在1秒之后将它们交换回去。如果它们相同,那就保持原样。

问题在于,当我第一次点击并出现卡片时,在第二次点击另一张(不同的)卡片后,它不会出现并在1秒后交换第一张卡片。有人知道为什么点击后没有出现第二张卡?

顺便说一下,当一对正确时,一切正常,这是我在侦听器中负责该逻辑的代码片段:

final int copy = i;

 card2.addActionListener((e) -> {
            card2.setIcon(new ImageIcon(icons[copy].getAbsolutePath()));

            if(firstClick == null)
            {
                firstClick = (Card)e.getSource();
            }
            else
            {
                Card secondClick = (Card)e.getSource();
                if(firstClick.getID() != secondClick.getID())
                {
                    try
                    {
                        Thread.sleep(1000);
                    } catch (InterruptedException e1)
                    {
                        //e1.printStackTrace();
                    }
                    firstClick.setIcon(new ImageIcon(background.getAbsolutePath()));
                    secondClick.setIcon(new ImageIcon(background.getAbsolutePath()));
                    firstClick = null;
                }
                else
                    firstClick = null;
            }

        });

1 个答案:

答案 0 :(得分:0)

当方法Auth0正在执行时,GUI无法对鼠标和键盘事件作出反应,所以基本上你的代码是"冻结"你的GUI一秒钟。我相信课程Native是您所需要的,乍一看,MadProgrammer提到的重复问题可能会对您有所帮助。