2013-12-03 1 views
0

Я пишу игру и нуждаюсь в обратном отсчете 60 секунд. Я бы хотел, чтобы он начал отсчет, когда я нажимаю кнопку «Пуск». Я могу получить его для обратного отсчета вручную прямо сейчас, но нужно сделать это автоматически.Как я могу сделать обратный отсчет в своем апплете?

Это Java-апплет, а не Javascript.

Есть ли способ, которым я могу включить этот таймер в фоновом режиме, пока я использую другие кнопки? Я использую JLabels и JButtons. Можно ли одновременно запустить два ActionListeners?

+0

Используйте 'java.util.timer' или' java.swing.timer' – ferrerverck

ответ

1

Использование javax.swing.Timer

Выполнить этот пример. Вы увидите, что вы все еще можете выполнять другие действия во время работы. Нажмите на да или нет кнопки, в то время как время будет

import java.awt.BorderLayout; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JApplet; 
import javax.swing.JButton; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.Timer; 

public class Test extends JApplet { 

    private JLabel label1 = new JLabel("60"); 
    private JLabel label2 = new JLabel("Yes"); 
    private JButton jbt1 = new JButton("Yes"); 
    private JButton jbt2 = new JButton("No"); 
    private int count = 60; 
    private Timer timer; 

    public Test() { 
     JPanel panel1 = new JPanel(new GridLayout(1, 2)); 
     panel1.add(label1); 
     panel1.add(label2); 
     label1.setHorizontalAlignment(JLabel.CENTER); 
     label2.setHorizontalAlignment(JLabel.CENTER); 
     JPanel panel2 = new JPanel(); 
     panel2.add(jbt1); 
     panel2.add(jbt2); 

     add(panel1, BorderLayout.CENTER); 
     add(panel2, BorderLayout.SOUTH); 

     timer = new Timer(1000, new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       count--; 
       if (count == 0) timer.stop(); 

       label1.setText(String.valueOf(count)); 

      } 
     }); 
     timer.start(); 

     jbt1.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       label2.setText("Yes"); 
      } 
     }); 
     jbt2.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       label2.setText("No"); 
      } 
     }); 
    } 
} 
+1

Спасибо так много! Я реализовал это, и он работал СОВЕРШЕННО !!! StackOverflow - это потрясающе ... – ThatVideoGuyTom

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

  • Нет связанных вопросов^_^