如何将计时器设置为ActionListener

时间:2015-05-31 19:46:35

标签: java timer

我创造了老虎机游戏。在我的老虎机游戏中,我有一个按钮,按下时会生成三个随机图像。我希望此按钮在按下后5秒生成三个随机图像。这是我的按钮及其动作监听器的代码。

   b1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        randomPictureGenerator(evt);
        repaint();    
      }

    });

private void randomPictureGenerator(java.awt.event.ActionEvent evt) {                                               
    this.run(); 
    }
  public void run() {
    pictures = new ArrayList<>();
    pictures.add(new File("question.png"));
    pictures.add(new File("banana.png"));
    pictures.add(new File("chocolate.png"));
    pictures.add(new File("icecream.png"));
    pictures.add(new File("bell.png"));
    pictures.add(new File("apple.png"));
    pictures.add(new File("money.png"));
    pictures.add(new File("number-7.png"));
    pictures.add(new File("necklace.png"));
    pictures.add(new File("gloves.png"));
    int number = rand.nextInt((pictures.size() -1/*Max*/ - 0/*min*/) + 1) + 0/*Min*/;
    this.label.setIcon(new ImageIcon(pictures.get(number).getAbsolutePath()));
    int number2 = rand2.nextInt((pictures.size() -1/*Max*/ - 0/*min*/) + 1) + 0/*Min*/;
    this.label2.setIcon(new ImageIcon(pictures.get(number2).getAbsolutePath()));
    int number3 = rand3.nextInt((pictures.size() -1/*Max*/ - 0/*min*/) + 1) + 0/*Min*/;
    this.label3.setIcon(new ImageIcon(pictures.get(number3).getAbsolutePath()));
}

1 个答案:

答案 0 :(得分:1)

这是Threads发挥作用的地方!你可以通过异常处理,线程和线程中断从编译错误中做很多事情。但是这可以通过将此代码放在run()方法中来完成您想要的操作。

try {
Thread.sleep(5000);                 //5000 milliseconds is five seconds.
} catch(InterruptedException ex) {
 Thread.currentThread().interrupt();
}