Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 定时器不工作';按下另一个按钮(小程序)时不工作_Java_Timer_Applet_Awt - Fatal编程技术网

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--;            

        }                   
    });