Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

hosting en interdominios
2.937 lecturas y 2 respuestas
  • Boca de Pez Boca de Pez
    6

    Problema cronometro en Java

    Hola he intentado hacer un cronómetro en Netbeans con JFrame y de hecho funciona, pero el problema es que por cada centésima abre una ventana que se van superponiendo unas a otras hasta que colapsa. He probado aplicar el método dispose() pero nada no he conseguido solucionar el problema .

    He hecho cuatro archivos.Un main, un hilo, el archivo de la aplicación y el que lleva la clase cronómetro:

    archivo clase cronómetro:

    import javax.swing.JOptionPane;
    public class cronometro extends Thread{
    public static cronometro iniciadorCronometro;

    public void run(){
    try{
    String texto=cronometer.aplicacion.jLabel1.getText();
    int segundos = 0;
    int centesimas = 0;
    for(segundos=0;segundos<60;segundos++){
    for(centesimas=0;centesimas<60;centesimas++){
    delay();
    aplicacion a=new aplicacion();
    a.jLabel1.setText(segundos+":"+centesimas);
    a.setVisible(true);
    a.setLocationRelativeTo(null);

    }
    }
    }catch(Exception e){
    JOptionPane.showMessageDialog(null, "ERROR");
    }

    }

    public static void delay(){
    try{
    Thread.sleep(100);
    }catch(Exception e){
    e.printStackTrace();
    }

    }

    }

    archivo hilo:

    public class hilo {
    public static cronometro iniciadorCronometro;
    public static void main(String[] args) {}
    public static void init(){
    iniciadorCronometro=new cronometro();
    iniciadorCronometro.start();
    }
    }

    archivo aplicacion (es un jFrame)

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    if(evt.getSource()==jButton1){
    hilo.init();

    }
    }

    Como digo al abrirlo comienza el cronometro pero cada centesima es una ventana que se va superponiendo a la anterior hasta que colapsa.

    un saludo.

    Este tema lleva más de 6 meses inactivo. Es recomendable que abras un nuevo tema para retomar la conversación.
    • Boca de Pez Boca de Pez
      12

      En cada centésima estás creando un nuevo objeto aplicación,…

      En cada centésima estás creando un nuevo objeto aplicación, lo cual significa crear un nuevo jframe por cada centésima.

      En vez de eso, crea el jFrame en el main con un label que se actualizará desde tu thread cronómetro. Tienes que crear el Event Dispatcher Thread que procese eventos del jFrame y sincronizar dicho thread con el tuyo. Java tiene utilidades para eso pero ahora mismo no sabría decirte. Espero que estos indicios te sirvan de algo.