Я немного борюсь с этим. После исследования на Google Я создал следующую рутину таймера, который хорошо работает при вызовенужна помощь по установке метода таймера за 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 который является правильным местом для этого так что, когда я нажимаю кнопку воспроизведения, он играет ход, и когда я нажимаю stop, останавливает (или приостанавливает) процедуру. Вот мой 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
Убедитесь, что вы используете javax.swing.Timer & not java.util.Timer – MadProgrammer
Да, я использовал java.util.Timer ... doh !! Работаю сейчас :-). Еще раз спасибо. – user1432365