我试图在记忆游戏中写一个逻辑,当我点击卡片并且它们不是一对(不同的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;
}
});
答案 0 :(得分:0)
当方法Auth0
正在执行时,GUI无法对鼠标和键盘事件作出反应,所以基本上你的代码是"冻结"你的GUI一秒钟。我相信课程Native
是您所需要的,乍一看,MadProgrammer提到的重复问题可能会对您有所帮助。