SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados (20)

Função PROCV
Função PROCVFunção PROCV
Função PROCV
 
CSharp.ppt
CSharp.pptCSharp.ppt
CSharp.ppt
 
How to Create an Array & types in PHP
How to Create an Array & types in PHP How to Create an Array & types in PHP
How to Create an Array & types in PHP
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
PCII AULA 3 - INTERFACES EM JAVA
PCII AULA 3 - INTERFACES EM JAVAPCII AULA 3 - INTERFACES EM JAVA
PCII AULA 3 - INTERFACES EM JAVA
 
Generic programming in java
Generic programming in javaGeneric programming in java
Generic programming in java
 
Android Threading
Android ThreadingAndroid Threading
Android Threading
 
Core java Essentials
Core java EssentialsCore java Essentials
Core java Essentials
 
Swift in SwiftUI
Swift in SwiftUISwift in SwiftUI
Swift in SwiftUI
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
JavaScript - Chapter 15 - Debugging Techniques
 JavaScript - Chapter 15 - Debugging Techniques JavaScript - Chapter 15 - Debugging Techniques
JavaScript - Chapter 15 - Debugging Techniques
 
Introduction to react_js
Introduction to react_jsIntroduction to react_js
Introduction to react_js
 
XML y DTDs
XML y DTDsXML y DTDs
XML y DTDs
 
Lambda and Stream Master class - part 1
Lambda and Stream Master class - part 1Lambda and Stream Master class - part 1
Lambda and Stream Master class - part 1
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
Lab #2: Introduction to Javascript
Lab #2: Introduction to JavascriptLab #2: Introduction to Javascript
Lab #2: Introduction to Javascript
 
Java script ppt
Java script pptJava script ppt
Java script ppt
 
Java programming lab manual
Java programming lab manualJava programming lab manual
Java programming lab manual
 
Presentation1
Presentation1Presentation1
Presentation1
 
Java arrays
Java arraysJava arrays
Java arrays
 

Destaque

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
 

Destaque (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
 

Mais 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
 

Mais 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
 

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