SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

javascript networking
javascript networkingjavascript networking
javascript networkingHika Maeng
 
I will be callback/JS同步與非同步
I will be callback/JS同步與非同步I will be callback/JS同步與非同步
I will be callback/JS同步與非同步ZenChou2
 
Rambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тестыRambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тестыRAMBLER&Co
 
C++14 reflections
C++14 reflections C++14 reflections
C++14 reflections corehard_by
 
Java осень 2012 лекция 6
Java осень 2012 лекция 6Java осень 2012 лекция 6
Java осень 2012 лекция 6Technopark
 
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascriptECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascriptmatparisot
 
Hace una calculadora en jeank
Hace una calculadora en jeankHace una calculadora en jeank
Hace una calculadora en jeankHumbertoWuwu
 
Javascrpt arale
Javascrpt araleJavascrpt arale
Javascrpt araleAlipay
 
Java весна 2013 лекция 6
Java весна 2013 лекция 6Java весна 2013 лекция 6
Java весна 2013 лекция 6Technopark
 
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習BAtsushi Tadokoro
 
Diff & Integral formula the newtun
Diff & Integral formula the newtunDiff & Integral formula the newtun
Diff & Integral formula the newtunTun Saru
 
Фатальный недостаток Node.js
Фатальный недостаток Node.jsФатальный недостаток Node.js
Фатальный недостаток Node.jsOleksii Okhrymenko
 

Was ist angesagt? (17)

javascript networking
javascript networkingjavascript networking
javascript networking
 
I will be callback/JS同步與非同步
I will be callback/JS同步與非同步I will be callback/JS同步與非同步
I will be callback/JS同步與非同步
 
Taller de string(java)
Taller de string(java)Taller de string(java)
Taller de string(java)
 
Rambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тестыRambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тесты
 
C++14 reflections
C++14 reflections C++14 reflections
C++14 reflections
 
Java осень 2012 лекция 6
Java осень 2012 лекция 6Java осень 2012 лекция 6
Java осень 2012 лекция 6
 
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascriptECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
 
Hace una calculadora en jeank
Hace una calculadora en jeankHace una calculadora en jeank
Hace una calculadora en jeank
 
Javascrpt arale
Javascrpt araleJavascrpt arale
Javascrpt arale
 
Algoritmo secuencial
Algoritmo secuencialAlgoritmo secuencial
Algoritmo secuencial
 
Kruskal algorithm
Kruskal algorithmKruskal algorithm
Kruskal algorithm
 
Java весна 2013 лекция 6
Java весна 2013 лекция 6Java весна 2013 лекция 6
Java весна 2013 лекция 6
 
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
 
Diff & Integral formula the newtun
Diff & Integral formula the newtunDiff & Integral formula the newtun
Diff & Integral formula the newtun
 
Danna y felix 10°
Danna y felix 10°Danna y felix 10°
Danna y felix 10°
 
Taller1
Taller1Taller1
Taller1
 
Фатальный недостаток Node.js
Фатальный недостаток Node.jsФатальный недостаток Node.js
Фатальный недостаток Node.js
 

Andere mochten auch

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
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBancojubacalo
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.jubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSPjubacalo
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletjubacalo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DBjubacalo
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajaxjubacalo
 
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
 
Paper to prototype, or.... How I learned to stop worrying and love Science
Paper to prototype, or.... How I learned to stop worrying and love SciencePaper to prototype, or.... How I learned to stop worrying and love Science
Paper to prototype, or.... How I learned to stop worrying and love ScienceChris McQueen
 
ActionScript Buscar Parejas
ActionScript Buscar ParejasActionScript Buscar Parejas
ActionScript Buscar Parejasjubacalo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSPjubacalo
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSPjubacalo
 
Word compilar bibliografia
Word compilar bibliografiaWord compilar bibliografia
Word compilar bibliografiajubacalo
 
ActionScript Caza pajarotos
ActionScript Caza pajarotosActionScript Caza pajarotos
ActionScript Caza pajarotosjubacalo
 
Textura de agua
Textura de aguaTextura de agua
Textura de aguajubacalo
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojubacalo
 
Interpolación de Movimiento con AS
Interpolación de Movimiento con ASInterpolación de Movimiento con AS
Interpolación de Movimiento con ASjubacalo
 

Andere mochten auch (20)

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
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
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
 
Presentazione
PresentazionePresentazione
Presentazione
 
Paper to prototype, or.... How I learned to stop worrying and love Science
Paper to prototype, or.... How I learned to stop worrying and love SciencePaper to prototype, or.... How I learned to stop worrying and love Science
Paper to prototype, or.... How I learned to stop worrying and love Science
 
Word VBA
Word VBAWord VBA
Word VBA
 
ActionScript Buscar Parejas
ActionScript Buscar ParejasActionScript Buscar Parejas
ActionScript Buscar Parejas
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
 
Word compilar bibliografia
Word compilar bibliografiaWord compilar bibliografia
Word compilar bibliografia
 
ActionScript Caza pajarotos
ActionScript Caza pajarotosActionScript Caza pajarotos
ActionScript Caza pajarotos
 
Textura de agua
Textura de aguaTextura de agua
Textura de agua
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
Interpolación de Movimiento con AS
Interpolación de Movimiento con ASInterpolación de Movimiento con AS
Interpolación de Movimiento con AS
 

Mehr von jubacalo

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
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagenjubacalo
 
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
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
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
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva pagejubacalo
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oraclejubacalo
 
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
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionalesjubacalo
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datosjubacalo
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 

Mehr von jubacalo (16)

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.
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
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
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
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
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
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
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionales
 
Solver
SolverSolver
Solver
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 

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