如何启动Swing定时器?

时间:2018-06-28 17:17:06

标签: java swing if-statement timer actionlistener

现在,每次我手动单击一个按钮时,该对象都会移动一定的增量,但是实际上,一旦单击该按钮,该对象实际上就会在整个屏幕上自行移动。我尝试调用timer.start();在我的代码中的不同时间。同样,在actionPerformed方法中设置一个“ if”语句,该语句检查按钮是否被按下,然后调用timer.start()。但是,它没有使对象自行移动。

有人可以引导我朝正确的方向前进吗?我写的代码不对吗?还是这个问题与Java Swing Timer有关。

PS。我是Java新手,

这是我的代码的一部分:

 public void actionPerformed(ActionEvent e){

    if (e.getSource() == rightBtn) {    
        objXpos += objMoveIncrement;
        direction.equals("Right");

    }
    if (e.getSource() == leftBtn) {
        direction.equals("Left");
        objXpos -= objMoveIncrement;
    }

    repaint();

} } **编辑 假设计时器会在单击按钮后启动,计时器就是使对象在屏幕上移动的原因

1 个答案:

答案 0 :(得分:1)

  

此问题与Java swing计时器有关。

否。

  

我写的代码不正确吗?

那将是问题。

  

计时器应该在单击按钮后启动

计时器如何停止?如果单击“右”然后单击“下”,会发生什么?

在不知道确切要求的情况下,很难给出确切的解决方案。

因此,我建议一种解决方案是在程序启动时才启动Timer。

然后在ActionListener中为每个按钮更改方向。

然后,当调用Timer的ActionListner时,您只需根据当前方向移动对象,然后重新绘制对象即可。

通常,您将使用Key Bindings这样的东西。因此,当您按下某个键时,将启动计时器,而当您释放该键时,将停止计时器。查看Motion Using the Keyboard中的Motion With Key Bindings示例,以了解此方法的有效示例。