2013-09-12 5 views
0

Мне интересно, как я могу заставить Java-программу задерживать части кода, чтобы предотвратить запуск спам-кнопок/других вещей в программе. Итак, давайте просто скажем, что я делаю программу, которая отображает количество раз, когда пользователь нажал кнопку. Я хотел бы, чтобы задержка для пользователя не могла быстро нажимать кнопку. Я слышал, что таймеры java могут мне помочь, но я не могу найти учебник, объясняющий, что мне нужно сделать.Java - как создать задержки

public void ButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    count+=1; 
    labelA.setText(Integer.toString(count)); 
} 

Это всего лишь пример программы, а не то, на что фактически работает. Так может кто-то мне помочь? Мне нужно, чтобы программа создавала задержку, чтобы пользователь не мог спамить. Спасибо :) (это пересмотренный вопрос от ранее)

+2

Сделал [официальный Свинг Таймер] (http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html) ссылка не поможет? – Reimeus

+0

Таймер @Reimeus является излишним для этой конкретной проблемы. timeMillis() достаточно. – Cruncher

ответ

3

Сохранить переменный экземпляр в вашем действие слушателя называется long lastClicked и инициализировать его в 0.

в обработчике:

int delay = 1000; 
if(System.currentTimeMillis() > lastClicked + delay) 
{ 
    //do your click 
    lastClicked = System.currentTimeMillis(); 
} 

задержки 1000 будет 1 секунда.

+0

Спасибо, много, я так долго искал для этого :) Отлично работает благодаря вам:) !!! – Arc

4

Если у вас есть поле timer из javax.swing.Timer,

private Timer timer; 

вы можете создать экземпляр в конструктор или метод инициализации:

final ActionListener listener = new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     button.setEnabled(true); 
    } 
}; 
timer = new Timer(2000, listener); 
timer.setRepeats(false); 

В этом случае задержка 2000 миллисекунды до снова нажав кнопку.

Вы можете запустить его при нажатии кнопки.

button.setEnabled(false); 
timer.start(); 
+2

+1 для правильного одного из возможных способов – mKorbel

Смежные вопросы