Código
public static void stop_it(){ if (max_altura == 504){ timer.cancel(); timer.purge(); }
luego al tocar un boton necestio q realize la misma tarea pero el timer deja de funcionar...
aca les dejo el codigo son 200 lineas mas o menos muy muy desprolijas ya q no se programar en java de seguro hice un monton de cosas inecesarias pero espero q se entienda...
el codigo de boton y el timer estan entre la linea 73 y la 103
el codigo de la funcion para detenerlo esta entre la linea 184 y la 189
espero q se entienda.... (ball y scale son imagens,q se van a ir moviendo.... no le hagan caso...)
Código
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Timer; import java.util.TimerTask; public class MyClass { static short max_altura = 6; static short max_ancho = 386; static short min_altura = 504; static short min_ancho = 386; static float vi_val = 0f; static float con_accel = 9.8f; static float up = 500f; static float cielito = 500f; static boolean pause_val = false; frame.setLayout(null); frame.setSize(800, 565); frame.setResizable(false); label1.setBounds(10, 20, 110, 20); //altura altura.setBounds(140, 20, 200, 20); label3.setBounds(10, 50, 110, 20); //accel accel.setBounds(140, 50, 200, 20); label4.setBounds(10, 80, 140, 20); //vi vi.setBounds(140, 80, 200, 20); //scale scale.setBounds(400, 20, 50, 500); //ball ball.setBounds(max_ancho, max_altura, 30, 30); start.setBounds(10, 230, 330, 20); @Override public void run(){ stop_it(); max_altura += 1; ball.setBounds(max_ancho, max_altura, 30, 30); frame.revalidate(); frame.repaint(); } }; timer.schedule(task, 0, 20); } }); set_val.setBounds(10, 200, 330, 20); @Override max_altura = 6; ball.setBounds(max_ancho, max_altura, 30, 30); frame.revalidate(); frame.repaint(); } }); pause.setBounds(10, 260, 330, 20); @Override } }); //uper uper.setBounds(max_ancho+50, max_altura-10, 200, 50); //mid mid.setBounds(max_ancho+50, 245, 200, 50); down.setBounds(min_ancho+50, min_altura-10, 200, 50); //dir label5.setBounds(10, 110, 150, 20); dir.setBounds(140, 110, 200, 20); dir.addItem("Hacia abajo"); dir.addItem("Hacia arriba"); @Override } }); frame.add(label5); frame.add(dir); frame.add(uper); frame.add(mid); frame.add(down); frame.add(altura); frame.add(accel); frame.add(start); frame.add(set_val); frame.add(scale); frame.add(ball); frame.add(pause); frame.add(label4); frame.add(vi); frame.add(label1); frame.add(label3); frame.setVisible(true); } public static void stop_it(){ if (max_altura == 504){ timer.cancel(); timer.purge(); } } }
el codigo de boton y el timer estan entre la linea 73 y la 103