0
我遇到了問題,創建了我的Java框架應用程序。 我無法在循環中調用重繪組件; 這是莫類的部分:學習如何使用的paintComponent方法使用JFrame創建動畫
if(e.getSource()==drop){
//check if the row has space
if(currentGame.isFull(choosePosition)){
return;
}
else{
int row = currentGame.placeFigure(choosePosition, turn);
ImageIcon temp;
if(turn)
temp = firstIcon;
else
temp = secondIcon;
for(int i = 0; i != row + 1; ++i){
cells[i][choosePosition].setIcon(temp);
if(i != 0)
cells[i - 1][choosePosition].setIcon(emptyIcon);
gameBoardPanel.repaint();
gameBoardPanel.revalidate();
Graphics myGraphics = getGraphics();
// Draw as appropriate using myGraphics
myGraphics.dispose();
paint(myGraphics);
try {
Thread.sleep(500);
} catch (InterruptedException ie) {
//Handle exception
System.out.println("can't start animation");
}
}
repaint();
}
}
不要在框架中創建動畫,而應該在「JPanel」或「BufferedImage」中創建動畫。 1)爲了更快得到更好的幫助,請發佈[SSCCE](http://sscce.org/)。 2)獲取圖像的一種方法是通過熱鏈接到[本答案](http://stackoverflow.com/a/19209651/418556)中看到的圖像。 –
不要阻塞事件派發線程。相反,使用javax.swing.Timer – MadProgrammer
另外,不要使用getGraphics(如果你這樣做,也不要處理它),這不是繪畫完成的方式。看看[執行自定義繪畫](http://docs.oracle.com/javase/tutorial/uiswing/painting/) – MadProgrammer