23/08/2013, 17:06
|
| | Fecha de Ingreso: julio-2013
Mensajes: 20
Antigüedad: 11 años, 5 meses Puntos: 0 | |
Respuesta: JFrame y JDialog Tengo un programa en un JDialog es un cronometro pero es en retroceso, este tiene los botones iniciar, pausa, y detener, un JLbael para mostrar la accion y progreso del crono, al igual que campos de texto para introducir el valor de las variables e indicar el tiempo que quiero para que desde allí comience el conteo hacia cero, este JDialog lo abro desde un JFrame y puedo abrir varias ventanas del mismo con solo seguir oprimiendo el botón que lo extrae desde el Jframe, y cada ventana al compilar es independiente de la otra y le puedo ingresar los valores del tiempo que quiero a cada una y manipularlas independientemente, lo que quiero es que si saco por ejemplo 5 ventanas desde el botón del JFrame y al oprimir inicio todas las 5 ventanas comience la acción del cronometro hacia cero al mismo tiempo al igual que pausa o detener, pero cada una es independiente de la otra, eso es bueno porque necesito que cada una cronometre el tiempo hacia cero desde un numero introducido desde el campo de texto independientemente, pero necesito crear unos botones aparte para que me comience a cronometrar y manejen todas las ventanas al mismo tiempo, se preguntara para que quiero esto, pues lo que quiero hacer es una secuencia de diferentes tiempos y cuando cada una llegue a cero esta me active un evento en específico ya predeterminado y que me falta adicionarle
public class Crono extends javax.swing.JDialog {
public Crono(java.awt.Frame parent, boolean modal, Avatar avatar) {
super(parent, modal);
initComponents();
labelHeader3.setText(avatar.getTitulo());// extraigo el titulo del icono desde donde habro la ventana Jdialog
setLocationRelativeTo(this);
public boolean issuspended = false; //para saber si el hilo está suspendido o pausado
int hora , min , seg , ds ; //unidades de medida
Thread hilo = new Thread() {//declaramos el hilo
@Override
public void run() {
try {
while (true) {//ciclo infinito
if (ds == 0 && seg > 0 ) { //si los decisegundos son iguales a 0
ds = 99; //decisegundo vuelve a empezar en 99
seg--; //y disminuye un segundo
}
if (seg == 0 && min > 0 ) { //si los segundos son iguales a 0
seg = 59;//segundo vuelve a empezar en 59
min --;//y disminuye un minuto
}
if (min == 0 && hora >0) {//si los minutos son iguales a 0
min = 59;//minuto vuelve a empezar en 59
hora--;//y disminuye una hora
}
if (seg >0 || min >0 || hora >0 ){
ds--; }//disminuye las décimas de segundo
if ( hora ==0 && min ==0 && seg ==0 )
{
ds = 0;
}
lblTime.setText(hora + ":" + min + ":" + seg + ":" + ds); //se muestra en el jlabel
hilo.sleep(10); //que duerma una décima de segundo
}
} catch (java.lang.InterruptedException ie) {
System.out.println(ie.getMessage());
}
}
};
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void BotonActionPerformed(java.awt.event.ActionEvent evt) {
// Aqui obtengo mediante campo de texto los valores para las variables
hora = Integer.parseInt(TextHoras.getText());
min = Integer.parseInt(TextMIn.getText());
seg = Integer.parseInt(TextSeg.getText());
}
private void btnPausaActionPerformed(java.awt.event.ActionEvent evt) {
hilo.suspend();//se suspende o pausa el hilo
issuspended = true;//el hilo está suspendido
btnInicio.setEnabled(true);
btnPausa.setEnabled(false);
}
private void btnDetenerActionPerformed(java.awt.event.ActionEve nt evt) {
hilo.suspend(); //se suspende el hilo.. (NO utilizamos hilo.stop() porque si lo usamos, el hilo se "muere")
ds = seg = min = hora = 0;//todas las unidades en cero
lblTime.setText("0:0:0:0");//cronometro en cero
issuspended = true;//el hilo esta suspendido
btnInicio.setEnabled(true);
btnDetener.setEnabled(false);
btnPausa.setEnabled(false);
}
private void btnInicioActionPerformed(java.awt.event.ActionEven t evt) {
btnInicio.setEnabled(false);
btnDetener.setEnabled(true);
btnPausa.setEnabled(true);
if (!issuspended) {//si no está suspendido o pausado
hilo.start();//el hilo empieza
} else {//de lo contrario
hilo.resume();//el hilo se reanuda
issuspended = false;//el hilo ya no está suspendido
}
}
Yo sé que los botones son privados, intente poner unos botones en public y añadirles las mismas acciones que los privados y estos llamarlos desde el Jframe pero nada no hace nada.
cualquier duda se la resulevo por si no se entendio bien,
de antemano muchas gracias por cualquier ayuda |