BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

Problema cronometro en Java

BocaDePez

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.

BocaDePez
1

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.

vukits

usa el patrón Singleton ;)