0
我試圖每200毫秒更改JLabel上的圖標以模擬滾動骰子,我一直在線上搜索,而且我無法弄清楚如何設置一個定時器,以便我可以運行方法。 這是方法每200毫秒更換圖標
public void dice(){
int whichOne=(int)(Math.random()*6+1);
if(whichOne==1){jLabel12.setIcon(new ImageIcon(getClass().getResource("/spanish/dice1.png")));}
else if(whichOne==2){jLabel12.setIcon(new ImageIcon(getClass().getResource("/spanish/dice2.png")));}
else if(whichOne==3){jLabel12.setIcon(new ImageIcon(getClass().getResource("/spanish/dice3.png")));}
else if(whichOne==4){jLabel12.setIcon(new ImageIcon(getClass().getResource("/spanish/dice4.png")));}
else if(whichOne==5){jLabel12.setIcon(new ImageIcon(getClass().getResource("/spanish/dice5.png")));}
else if(whichOne==6){jLabel12.setIcon(new ImageIcon(getClass().getResource("/spanish/dice6.png")));}
}
這是I'm目前如何調用該方法
for(int i=0;i<9;i++){
dice();
}
感謝您的幫助。
https://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html – pvg
儘管如此,每30毫秒調用一次這種方法對於模擬骰子並不是一個好主意。這種方法在性能上不必要地沉重,你可以連續兩次得到相同的數字,這實際上並不是你想要的。圖形部分的第二種方法可能會更好。 – Gendarme
我同意30毫秒可能不需要,並且將與Swing有性能問題。 Swing不是OpenGL,它不能做快速的實時動畫。看看讓你的代碼工作在100或200毫秒,然後看看它是否需要改進。 – markspace