SlideShare une entreprise Scribd logo
1  sur  4
En esta práctica vamos a implementar un cronómetro con horas, minutos y segundos. Los dígitos son imágenes.

El cronómetro tiene dos botones:

    o   Un botón para arrancar y pausar.

    o   Un botón para reiniciar todo a cero.




FrameListener.java

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class FrameListener extends WindowAdapter {

        public void windowClosing(WindowEvent e){
               System.exit(0);
        }
}




                                                                            bitCoach::Juan Bautista Cascallar Lorenzo
CronometroThread.java

import   java.awt.event.ActionEvent;
import   java.awt.event.ActionListener;
import   javax.swing.ImageIcon;
import   javax.swing.JButton;
import   javax.swing.JPanel;
import   javax.swing.JLabel;

public class CronometroThread extends JPanel implements Runnable, ActionListener {

         private static final long serialVersionUID = 3287496534931916605L;

         //Atributos
         Thread crono_hilo = null;

         private boolean sw = true;
         private boolean detenido = true;

         private int horas = 0;
         private int minutos = 0;
         private int segundos = 0;

         JLabel[] lbl_digitos = null;

         JLabel etiqueta = null;

         char[] crono = {'0','0',':','0','0',':','0','0'};

         //Constructor
         public CronometroThread(){

                lbl_digitos = new JLabel [8];

                this.setLayout(null);
                this.setBounds(10, 10, 300, 140);

                for(int i = 0; i < lbl_digitos.length; i++) {
                       lbl_digitos[i] = new JLabel();
                       this.add(lbl_digitos[i]);
                }

                mostrarInfoCrono();

                JButton btn_arrancar_parar = new JButton("Arrancar/Parar");
                btn_arrancar_parar.setName("btn_arrancar_parar");
                btn_arrancar_parar.addActionListener(this);
                btn_arrancar_parar.setBounds(20,50,120,20);
                this.add(btn_arrancar_parar);

                JButton btn_reiniciar = new JButton("Reiniciar");
                btn_reiniciar.setName("btn_reiniciar");
                btn_reiniciar.addActionListener(this);
                btn_reiniciar.setBounds(150,50,110,20);
                this.add(btn_reiniciar);

                crono_hilo = new Thread(this);
                crono_hilo.start();

         }




                                                                              bitCoach::Juan Bautista Cascallar Lorenzo
private void mostrarInfoCrono(){

       for(int i = 0; i < lbl_digitos.length; i++) {
              if(crono[i] != ':'){
                      lbl_digitos[i].setIcon(new ImageIcon("imagenes/" + crono[i] + ".gif"));
                      lbl_digitos[i].setBounds(70 + (i*13), 10, 13, 23);
              }else{
                      lbl_digitos[i].setIcon(new ImageIcon("imagenes/separador.gif"));
                      lbl_digitos[i].setBounds(70 + (i*13), 10, 13, 23);
              }
       }
}

@Override
public void run() {
       // TODO Auto-generated method stub

       StringBuffer tmp;

       while(sw == true){
              try {
                      if(detenido == false){
                             mostrarInfoCrono();
                             Thread.sleep(1000);
                             segundos++;
                             //Calculamos los valores
                             if(segundos == 60){
                                     segundos = 0; minutos++;
                                     if(minutos == 60){
                                             minutos = 0; horas++;
                                             if(horas == 24){ horas = 0; }
                                     }
                             }

                             //Formatear la hora
                             tmp = new StringBuffer(8);

                             if(horas < 10){tmp.append('0');}
                             tmp.append(horas); tmp.append(':');
                             if(minutos < 10){tmp.append('0');}
                             tmp.append(minutos); tmp.append(':');
                             if(segundos < 10){tmp.append('0');}

                             tmp.append(segundos);
                             //System.out.println(tmp.toString());
                             crono = tmp.toString().toCharArray();

                     }
              } catch (InterruptedException e) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
              }
       }
}




                                                                     bitCoach::Juan Bautista Cascallar Lorenzo
//--- EVENTOS ---
       @Override
       public void actionPerformed(ActionEvent arg0) {
              // TODO Auto-generated method stub
              Object control = arg0.getSource();

              if(control instanceof JButton){
                     if(((JButton) control).getName().equals("btn_arrancar_parar")){
                             if(detenido == true){
                                    detenido = false;
                             }else{
                                    detenido = true;
                             }
                     }

                      if(((JButton) control).getName().equals("btn_reiniciar")){
                             detenido = true;

                                horas = 0;
                                minutos = 0;
                                segundos = 0;

                                for(int i = 0; i < crono.length; i++){
                                       if((i==2) || (i==5)){
                                               crono[i] = ':';
                                       }else{
                                               crono[i] = '0';
                                       }
                                }

                                mostrarInfoCrono();
                      }
              }

       }

}



TestCronometro.java

import javax.swing.JFrame;

public class TestCronometro {

       private static CronometroThread cr = null;

       public static void main(String[] args) {
              // TODO Auto-generated method stub

              JFrame frame = new JFrame("Prueba del componente cronómetro");
              frame.setLayout(null);
              frame.addWindowListener(new FrameListener());
              frame.setBounds(0,0,300,140);
              cr = new CronometroThread();
              frame.add(cr);
              frame.setVisible(true);

       }

}




                                                                          bitCoach::Juan Bautista Cascallar Lorenzo

Contenu connexe

Tendances

Dockerization of real mobile device farm and scalable QA automation ecosystem
Dockerization of real mobile device farm and scalable QA automation ecosystemDockerization of real mobile device farm and scalable QA automation ecosystem
Dockerization of real mobile device farm and scalable QA automation ecosystemAlexey Khursevich
 
Automation Framework Presentation
Automation Framework PresentationAutomation Framework Presentation
Automation Framework PresentationBen Ngo
 
System testing ppt
System testing pptSystem testing ppt
System testing pptL ESHWAR
 

Tendances (6)

Unit testing with java
Unit testing with javaUnit testing with java
Unit testing with java
 
Sta unit 5(abimanyu)
Sta unit 5(abimanyu)Sta unit 5(abimanyu)
Sta unit 5(abimanyu)
 
Dockerization of real mobile device farm and scalable QA automation ecosystem
Dockerization of real mobile device farm and scalable QA automation ecosystemDockerization of real mobile device farm and scalable QA automation ecosystem
Dockerization of real mobile device farm and scalable QA automation ecosystem
 
Automation Framework Presentation
Automation Framework PresentationAutomation Framework Presentation
Automation Framework Presentation
 
System testing ppt
System testing pptSystem testing ppt
System testing ppt
 
TMMi Implementation Guideline
TMMi Implementation GuidelineTMMi Implementation Guideline
TMMi Implementation Guideline
 

En vedette

Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadorajubacalo
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datosjubacalo
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletjubacalo
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLjubacalo
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojubacalo
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jubacalo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSPjubacalo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DBjubacalo
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva pagejubacalo
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundojubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSPjubacalo
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSPjubacalo
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcatjubacalo
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBancojubacalo
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagenjubacalo
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
 

En vedette (20)

Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
 
Word VBA
Word VBAWord VBA
Word VBA
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 

Plus de jubacalo

Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2jubacalo
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oraclejubacalo
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajaxjubacalo
 
Escenarios
EscenariosEscenarios
Escenariosjubacalo
 
Matrices02
Matrices02Matrices02
Matrices02jubacalo
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámicajubacalo
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datosjubacalo
 
Textura de agua
Textura de aguaTextura de agua
Textura de aguajubacalo
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionalesjubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 

Plus de jubacalo (12)

Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Escenarios
EscenariosEscenarios
Escenarios
 
Matrices02
Matrices02Matrices02
Matrices02
 
Gráficos
GráficosGráficos
Gráficos
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámica
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datos
 
Textura de agua
Textura de aguaTextura de agua
Textura de agua
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionales
 
Solver
SolverSolver
Solver
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 

Dernier

FAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaranFAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaransekolah233
 
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdfمحاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdfKhaled Elbattawy
 
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...Eesti Loodusturism
 

Dernier (8)

FAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaranFAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
 
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdfمحاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
 
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
 
Energy drink .
Energy drink                           .Energy drink                           .
Energy drink .
 
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
 
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmi
 
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
 
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
 

Java Thread Cronometro

  • 1. En esta práctica vamos a implementar un cronómetro con horas, minutos y segundos. Los dígitos son imágenes. El cronómetro tiene dos botones: o Un botón para arrancar y pausar. o Un botón para reiniciar todo a cero. FrameListener.java import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class FrameListener extends WindowAdapter { public void windowClosing(WindowEvent e){ System.exit(0); } } bitCoach::Juan Bautista Cascallar Lorenzo
  • 2. CronometroThread.java import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JLabel; public class CronometroThread extends JPanel implements Runnable, ActionListener { private static final long serialVersionUID = 3287496534931916605L; //Atributos Thread crono_hilo = null; private boolean sw = true; private boolean detenido = true; private int horas = 0; private int minutos = 0; private int segundos = 0; JLabel[] lbl_digitos = null; JLabel etiqueta = null; char[] crono = {'0','0',':','0','0',':','0','0'}; //Constructor public CronometroThread(){ lbl_digitos = new JLabel [8]; this.setLayout(null); this.setBounds(10, 10, 300, 140); for(int i = 0; i < lbl_digitos.length; i++) { lbl_digitos[i] = new JLabel(); this.add(lbl_digitos[i]); } mostrarInfoCrono(); JButton btn_arrancar_parar = new JButton("Arrancar/Parar"); btn_arrancar_parar.setName("btn_arrancar_parar"); btn_arrancar_parar.addActionListener(this); btn_arrancar_parar.setBounds(20,50,120,20); this.add(btn_arrancar_parar); JButton btn_reiniciar = new JButton("Reiniciar"); btn_reiniciar.setName("btn_reiniciar"); btn_reiniciar.addActionListener(this); btn_reiniciar.setBounds(150,50,110,20); this.add(btn_reiniciar); crono_hilo = new Thread(this); crono_hilo.start(); } bitCoach::Juan Bautista Cascallar Lorenzo
  • 3. private void mostrarInfoCrono(){ for(int i = 0; i < lbl_digitos.length; i++) { if(crono[i] != ':'){ lbl_digitos[i].setIcon(new ImageIcon("imagenes/" + crono[i] + ".gif")); lbl_digitos[i].setBounds(70 + (i*13), 10, 13, 23); }else{ lbl_digitos[i].setIcon(new ImageIcon("imagenes/separador.gif")); lbl_digitos[i].setBounds(70 + (i*13), 10, 13, 23); } } } @Override public void run() { // TODO Auto-generated method stub StringBuffer tmp; while(sw == true){ try { if(detenido == false){ mostrarInfoCrono(); Thread.sleep(1000); segundos++; //Calculamos los valores if(segundos == 60){ segundos = 0; minutos++; if(minutos == 60){ minutos = 0; horas++; if(horas == 24){ horas = 0; } } } //Formatear la hora tmp = new StringBuffer(8); if(horas < 10){tmp.append('0');} tmp.append(horas); tmp.append(':'); if(minutos < 10){tmp.append('0');} tmp.append(minutos); tmp.append(':'); if(segundos < 10){tmp.append('0');} tmp.append(segundos); //System.out.println(tmp.toString()); crono = tmp.toString().toCharArray(); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } bitCoach::Juan Bautista Cascallar Lorenzo
  • 4. //--- EVENTOS --- @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub Object control = arg0.getSource(); if(control instanceof JButton){ if(((JButton) control).getName().equals("btn_arrancar_parar")){ if(detenido == true){ detenido = false; }else{ detenido = true; } } if(((JButton) control).getName().equals("btn_reiniciar")){ detenido = true; horas = 0; minutos = 0; segundos = 0; for(int i = 0; i < crono.length; i++){ if((i==2) || (i==5)){ crono[i] = ':'; }else{ crono[i] = '0'; } } mostrarInfoCrono(); } } } } TestCronometro.java import javax.swing.JFrame; public class TestCronometro { private static CronometroThread cr = null; public static void main(String[] args) { // TODO Auto-generated method stub JFrame frame = new JFrame("Prueba del componente cronómetro"); frame.setLayout(null); frame.addWindowListener(new FrameListener()); frame.setBounds(0,0,300,140); cr = new CronometroThread(); frame.add(cr); frame.setVisible(true); } } bitCoach::Juan Bautista Cascallar Lorenzo