不要在Swing主线程EDT上调用Thread.sleep(…)。 曾经 。而是使用Swing计时器。
考虑使用JLabel显示图像,然后可以通过简单地换出ImageIcons来“翻转”卡片。翻转第二张卡后,如果不匹配,则启动一个非重复的Swing计时器,延迟时间为xxxx
ms,并在Timer的ActionListener的actionCommand方法中将两个JLabel的状态都还原为默认的ImageIcon。
可以在这里找到javax.swing.Timer教程:如何使用Swing计时器
编辑:
关于您对使用g.drawString的评论:由于您要做的就是交换JLabel的文本,因此现在变得更加容易。但是稍后,如果您决定升级程序以显示图像,则已经准备就绪。
编辑2:
关于您有关创建新的ActionListener类的问题:为此,我将使用匿名内部类。例如:
int delayTime = 2 * 1000; javax.swing.Timer myTimer = new Timer(delayTime, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO: put in the pre you want called in xxx mSecs. } }); myTimer.setRepeats(false); myTimer.start();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)