我正在爲此苦苦掙扎。在谷歌研究後,我創建了以下定時程序叫做需要幫助把一個計時器方法放在JToggleButton後面
// play move method
public static void playMove() {
int delay = 1200; // delay for 1 sec.
int period = 1200; // repeat every sec.
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
private int count = history.getGameIndex();
public void run() {
count++;
if (count >= history.getTotalMoves() + 1) {
timer.cancel();
timer.purge();
return;
}
history.next();
}
}, delay, period);
}
然而,當它工作得很好,問題是,我不明白如何將這個代碼集成到JToggleButton中這是正確的地方,它使當我點擊播放時,播放動作,當我點擊停止時,停止(或暫停)例程。這裏是我的JToggleButton中的代碼:
ImageIcon playIcon = new ImageIcon(
JBoard.class.getResource("/images/menu/play.png"));
btnPlayMove = new JToggleButton(playIcon);
btnPlayMove.setToolTipText("Play");
btnPlayMove.setContentAreaFilled(true);
btnPlayMove.setMargin(new Insets(2, 2, 2, 2));
btnPlayMove.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ie) {
if (isConnected()) {
showMessage("Engine disabled during network play...");
return;
} else if (btnPlayMove.isSelected()) {
// play
playMove();
ImageIcon playIcon = new ImageIcon(JBoard.class
.getResource("/images/menu/play.png"));
btnPlayMove.setIcon(playIcon);
} else {
// stop
ImageIcon stop = new ImageIcon(JBoard.class
.getResource("/images/menu/stop.png"));
btnPlayMove.setIcon(stop);
}
}
});
buttonPanel.add(btnPlayMove);
我是相當新的Java和這將是巨大的,如果有人可以幫助
MadProgrammer:感謝您的代碼。我明白你的意思,但是,我無法讓你的代碼正常工作。我將它放在我的課堂上,但Eclipse一直告訴我刪除參數以匹配'Timer()'?我到底在哪裏把代碼和我的方法聯繫起來? – user1432365 2012-07-18 16:21:52
請確保您使用的是javax.swing.Timer而不是java.util.Timer – MadProgrammer 2012-07-18 19:56:09
是的,我正在使用java.util.Timer ... doh!現在工作:-)。再次感謝你。 – user1432365 2012-07-19 18:47:40