Java 定时器不工作';按下另一个按钮(小程序)时不工作
我正在制作一个小程序,它有两个按钮:后退和前进。 我在每个按钮上都有相同的计时器来执行动画。如果我向前推一步,效果会很好,动画会运行,但如果我向后推一步,动画不会运行或运行不良(位置和速度错误)。 我想问题是计时器没有正确停止,并且在再次启动计时器时正在运行,但我不知道如何解决它 这是“前进”按钮的代码:Java 定时器不工作';按下另一个按钮(小程序)时不工作,java,timer,applet,awt,Java,Timer,Applet,Awt,我正在制作一个小程序,它有两个按钮:后退和前进。 我在每个按钮上都有相同的计时器来执行动画。如果我向前推一步,效果会很好,动画会运行,但如果我向后推一步,动画不会运行或运行不良(位置和速度错误)。 我想问题是计时器没有正确停止,并且在再次启动计时器时正在运行,但我不知道如何解决它 这是“前进”按钮的代码: //Code of the button "Paso a Paso" this.botonPasoAPaso = new JButton("Paso a paso");
//Code of the button "Paso a Paso"
this.botonPasoAPaso = new JButton("Paso a paso");
this.botonPasoAPaso.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//Avoid timer to accelerate
if (timer != null && timer.isRunning()) {
timer.stop();
}
//Code of the timer, makes an animation
timer = new Timer(35, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (pasoAPaso <= listaPaquetes.size()) {
Paquete p = listaPaquetes.get(pasoAPaso);
p.animar();
panelGrafo.removeAll();
panelGrafo.updateUI();
panelGrafo.setPaquete(p);
panelGrafo.setAnimar(true);
panelGrafo.repaint();
}
}
});
timer.start();
pasoAPaso++;
}
});
//按钮“Paso a Paso”的代码
this.botonPasoAPaso=新的JButton(“Paso a Paso”);
this.botonPasoAPaso.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0){
//避免定时器加速
if(timer!=null&&timer.isRunning()){
timer.stop();
}
//定时器的代码,制作动画
计时器=新计时器(35,新ActionListener(){
已执行的公共无效操作(操作事件e){
if(paso=0){
Paquete p=listaPaquetes.get(pasoAPaso);
p、 动物();
panelGrafo.removeAll();
panelGrafo.updateUI();
塞帕奎特(p);
集帕萨帕索(帕萨帕索);
panelGrafo.setAnimar(真);
panelGrafo.repaint();
//为皮塔·塞尔达斯设计的矩阵
RenderTabla.matrizTotal=new-Cuadrado[pasos.get(pasoAPaso.length][pasos.get(pasoAPaso)[0.length];
RenderTabla.matrizTotal=pasos.get(pasoAPaso);
表1.引言(pasos.get(pasoAPaso),假);
}
}
});
timer.start();
帕索帕索;
}
});
如果您看到视频,当我单击“Paso a Paso”(前进)按钮时,卡车已设置动画,但当我单击“后退”(后退)按钮时,它不工作(显示卡车,但未正确设置动画),如果我再次单击,则不会发生任何事情
谢谢。您的代码片段中有太多的问题,无法对可能出现的问题进行任何形式的解释。考虑提供一个说明你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱,更好地回答“我正在制作小程序…”1)为什么要编写小程序?如果是老师指定的,请参考。2) 见和。3) 它使用AWT还是Swing组件?
panelGrafo.removeAll()代码>使用,如中所示。
this.botonAtras.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (timer != null && timer.isRunning()) {
timer.stop();
}
timer = new Timer(35, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (pasoAPaso < listaPaquetes.size() && pasoAPaso>=0) {
Paquete p = listaPaquetes.get(pasoAPaso);
p.animar();
panelGrafo.removeAll();
panelGrafo.updateUI();
panelGrafo.setPaquete(p);
panelGrafo.setPasoAPaso(pasoAPaso);
panelGrafo.setAnimar(true);
panelGrafo.repaint();
//Actualizar matriz del render para pintar celdas
RenderTabla.matrizTotal = new Cuadrado[pasos.get(pasoAPaso).length][pasos.get(pasoAPaso)[0].length];
RenderTabla.matrizTotal = pasos.get(pasoAPaso);
tabla.introducirDatos(pasos.get(pasoAPaso),false);
}
}
});
timer.start();
pasoAPaso--;
}
});