现在,每次我手动单击一个按钮时,该对象都会移动一定的增量,但是实际上,一旦单击该按钮,该对象实际上就会在整个屏幕上自行移动。我尝试调用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();
} } **编辑 假设计时器会在单击按钮后启动,计时器就是使对象在屏幕上移动的原因
答案 0 :(得分:1)
此问题与Java swing计时器有关。
否。
我写的代码不正确吗?
那将是问题。
计时器应该在单击按钮后启动
计时器如何停止?如果单击“右”然后单击“下”,会发生什么?
在不知道确切要求的情况下,很难给出确切的解决方案。
因此,我建议一种解决方案是在程序启动时才启动Timer。
然后在ActionListener中为每个按钮更改方向。
然后,当调用Timer的ActionListner时,您只需根据当前方向移动对象,然后重新绘制对象即可。
通常,您将使用Key Bindings
这样的东西。因此,当您按下某个键时,将启动计时器,而当您释放该键时,将停止计时器。查看Motion Using the Keyboard中的Motion With Key Bindings
示例,以了解此方法的有效示例。