因此,我正在编写一个可以对玩家玩黑白棋/黑白棋的程序。我写了一个方法,使作品的动画短片flipping-如何让方法暂停而不暂停整个程序?
public void flip(int row, int col, Graphics window)
{
Color a;
if (pieces[row][col]==1)
a = Color.black;
else
a = Color.white;
for (int size = 90; size>0; size-=2)
{
try { Thread.sleep(11,1111); } catch (InterruptedException exc){}
window.setColor(new Color(0, 100, 0));
window.fillRect(row*100+3, col*100+3, 94, 94);
window.setColor(a);
window.fillOval(row*100 + 5, col*100+5+(90-size)/2, 90, size);
}
if (a==Color.black)
a=Color.white;
else
a=Color.black;
for (int size = 0; size<90; size+=2)
{
try { Thread.sleep(11,1111); } catch (InterruptedException exc){}
window.setColor(new Color(0, 100, 0));
window.fillRect(row*100+3, col*100+3, 94, 94);
window.setColor(a);
window.fillOval(row*100 + 5, col*100+5+(90-size)/2, 90, size);
}
}
它工作得很好,看上去很不错,但问题是,由于暂停了Thread.Sleep整个程序,它只能在翻转一块时间。有没有什么我可以做,暂停这种方法,而不会中断程序的其余部分?
谢谢大家。新的线程工作,但现在我有一个不同的问题。 flip方法中的三种setcolor方法正在混淆。我认为这是因为一些线程将颜色设置为绿色,一些变为黑色,一些变为白色。我该如何解决?
+1不要做任何可能在GUI线程中花费大量时间的事情。始终将此工作传递给antoher线程,并使用SwingUtils.invokeLater从另一个线程更新GUI。 –