El problema dice asi:
Se desea contar los segundos que se presiona un JButton en un formulario.
Solución:
Para resolver este problema, se debe conocer los eventos del JButton, para este problema, solo necesitamos conocer dos de ellos:
MousePressed: Ocurre cuando se presiona con el botón del ratón dentro el JButton, termina una vez que se levanta.
MouseReleased: Se ejecuta una vez que se levanta completamente el dedito 🙂 del boton del ratón.
Para implementar un contador se utiliza un Timer y un TimerTask el cual ira incrementando una variable cada 1000 milisegundos ( osea cada segundo ), este Timer, se implementa en una clase llamada Tiempo.java.
import java.util.Timer; import java.util.TimerTask; /** * @web https://www.jc-mouse.net * @author Mouse */ public class Tiempo { private Timer timer = new Timer(); private int segundos=0; //Clase interna que funciona como contador class Contador extends TimerTask { public void run() { segundos++; System.out.println("segundo: " + segundos); } } //Crea un timer, inicia segundos a 0 y comienza a contar public void Contar() { this.segundos=0; timer = new Timer(); timer.schedule(new Contador(), 0, 1000); } //Detiene el contador public void Detener() { timer.cancel(); } //Metodo que retorna los segundos transcurridos public int getSegundos() { return this.segundos; } }
Nuestra interfaz de prueba es un JFrame que solamente consta de un JButton
Implementando esta clase en nuestra interfaz de prueba en los eventos respectivos del JButton
Tiempo tiempo = new Tiempo(); private void jButton1MousePressed(java.awt.event.MouseEvent evt) { if(evt.getButton()==1) tiempo.Contar(); } private void jButton1MouseReleased(java.awt.event.MouseEvent evt) { tiempo.Detener(); javax.swing.JOptionPane.showMessageDialog(this,"Se presiono el boton por " + tiempo.getSegundos() + " Segundos" ); }
Resultado
Sketch2Code es un proyecto de Microsoft el cual usa IA (Inteligencia Artificial) para transformar el diseño de una inter[...]
VokoscreenNG es una herramienta versátil y de código abierto para la creación de screencasts, disponible para los sistem[...]
BorderPane es un layout que distribuye los nodos hijos en 5 posiciones TOP, LEFT, BOTTOM, RIGHT y CENTER Los nodos hijos[...]
Un post cortito de fin de semana 🙂 , este trata de la forma de extraer la información de una base de datos formar una es[...]
El cifrado César, también conocido como cifrado por desplazamiento o código de César, es una de las técnicas de cifrado[...]
En este post personalizaremos un componente JComboBox para que sus elementos acepten tablas (JTable) en lugar de texto s[...]