2015-02-14 2 views
2

Итак, я хотел выполнить действие, а затем приостановить на некоторое время, а затем завершить другое действие. Я слышал, что Thread.sleep() не очень хорошо, потому что он замерзает gui или что-то в этом роде до завершения задачи. Я знаю, что мне нужно использовать javax.swing.Timer или java.util.Timer для одной задачи выполнения, но я действительно не понимаю, как это сделать. Вот код. Кредит - JButton.Как использовать Swing Timer ActionListener

Credits.addActionListener(new ActionListener() { 

     public void actionPerformed (ActionEvent e){ 
      Credits.setVisible(false); 
      Oracle.setBounds(550,280,500,500);  
      Oracle.setFont(new java.awt.Font("Arial", Font.BOLD, 40)); 
      Oracle.setForeground(new java.awt.Color(240,240,240)); 
      Oracle.setText("Credits To:"); 
      // I want to wait or pause or sleep for 5000 milliseconds 
      // Then Change The Icon 
TimeClassAdd tcAdd = new TimeClassAdd(); 
    timer = new Timer(1000, tcAdd); 
    timer.start(); 
    timerLabel.setText("IT HAS BEGUN"); 

    long stopTime = System.currentTimeMillis(); 
    long elapsedTime = stopTime - startTime; 
    while (elaspedTime >= 5000) { 
    break;} 


Oracle.setIcon(OraclePNG); 


}}); 
+0

Я не вижу попытки попытаться использовать таймер в вашем коде. Пожалуйста, давайте посмотрим, что вы узнали из учебников, и, пожалуйста, покажите нам, в чем проблема, с которой вы столкнулись. Также, чтобы помочь нам сейчас и помочь себе в будущем, пожалуйста, отредактируйте свой код и измените имена переменных, чтобы они соответствовали соглашениям об именах Java: имена классов начинаются с имени письма в верхнем регистре и имени метода/переменной с буквой в нижнем регистре , Это значительно облегчит другим (** нам **), чтобы лучше понять ваш код. –

+0

Кроме того, что такое Oracle? Другой JButton? JLabel? Если это другой компонент, такой как JLabel, вам, вероятно, лучше использовать CardLayout (и таймер Swing) для замены компонентов. –

+0

Oracle is jlabel –

ответ

4

В качестве примера в Java API docs для javax.swing.Timer шоу:

int delay = 5000; //milliseconds 
ActionListener taskPerformer = new ActionListener() { 
    public void actionPerformed(ActionEvent evt) { 
     //...Perform a task... 
    } 
}; 
Timer timer = new Timer(delay, taskPerformer); 
timer.setRepeats(false); 
timer.start(); 

Подсказка: Используйте API Docs Java, если вы не знаете, как-то работает. Это сэкономит вам массу неприятностей.

+0

Подождите, так что я должен вставить этот код ВНУТРЕННИЙ КЛИЕНТЫ Actionlistener –

+0

@SamuelMusa: вы бы использовали такой код везде, где вам нужно было запустить ваш таймер. –

+0

У Hovercraft у меня было три ошибки –

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