2017-02-17 278 views
-4

我正在编写代码,它根据特定的坐标在独占板周围移动一个令牌块。目前,它会在每个方块中打印它,但我试图让它在每个方块中打印,并带有一个计时器,以便您可以看到每个方块打印以及在一个方块中进行打印时,它将删除前一个方块中的打印,令牌一次只能在一个方格中。这是我的代码至今:使用选择的坐标给for循环添加一个定时器

for(int g=0;g<10;g++) 
     { 
      JLabel redtoken = new JLabel(new ImageIcon ("src/TokenRed.png")); 
      redtoken.setBounds(x[g],y[g], 10, 10); // Size and position set 
      LPane.add(redtoken, new Integer(3)); // Red token set as layer 3 


     } 

测试:(令牌是红坊)

enter image description here

+0

的可能的复制[如何设置在Java定时器(http://stackoverflow.com/questions/4044726/how-to-set-a-timer-in- java) – DaveOz

+0

这不是重复的。这个问题也涉及去除前一个方块上的打印。 –

+0

您不需要计时器,您需要在添加新的令牌之前删除任何以前的令牌。 –

回答

1

如果我理解正确的话,你想看到一个红色标记从正方形跳到正方形。 我建议这样的事情:

Object lastPrinted = null; 
for(int g=0;g<10;g++) 
{ 
    if(alreadyPrinted != null){ 
     deleteToken(alreadyPrinted); 
    } 
    printNewToken(g) 
    try { 
     Thread.sleep(300); 
    } catch (InterruptedException e) { 
     Thread.currentThread().interrupt(); 
     System.err.println(e); 
    } 

} 
+0

感谢这一点,但我得到一个错误''未处理的异常类型InterruptedException'Thread.sleep(300);' –

+0

程序当前需要几秒钟加载,然后令牌出现在数组的最后一个方形它会打开 –

+0

这意味着您只能在执行该方法后打印该令牌。然后您需要循环打印方法。 –