现在,每当我手动单击一个按钮时,对象都会移动一定的增量,但实际上,一旦单击按钮,它就会自己在屏幕上移动。我在代码中多次尝试调用timer.start();。以及在actionPerformed方法中设置'if‘语句,该语句检查按钮是否被按下,然后调用timer.start()作为结果。但是,它并没有让物体自己移动。
有人能把我引向正确的方向吗?我的代码写得不对吗?或者这个问题是否与java swing计时器有关。
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();
}}**编辑计时器应在单击按钮后启动,而计时器允许对象在屏幕上移动
发布于 2018-06-29 01:53:09
这个问题与java swing timer有关。
不是的。
我写的代码对吗?
这就是问题所在。
一旦点击按钮,定时器就会启动
计时器是如何停止的?如果单击“向右”,然后单击“向下”,会发生什么?
如果不知道确切的要求,就很难给出确切的解决方案。
因此,我建议一种解决方案是在程序启动时启动计时器。
然后在每个按钮的ActionListener中更改方向。
然后,当计时器的ActionListner被调用时,您只需根据当前方向移动对象,然后重新绘制对象。
通常情况下,您会使用Key Bindings
来处理类似的事情。所以当你按下一个键时,你启动了计时器,当你松开这个键时,你停止了计时器。请查看来自Motion Using the Keyboard的Motion With Key Bindings
示例,以获得此方法的工作示例。
https://stackoverflow.com/questions/51088384
复制相似问题