Foro sobre Java SE > INSERTAR VALOR DE UN HILO EN UN JLABEL DENTRO DE UNA JTABLE
Hola buenos dias, gracias anticipadas por la respuesta. Estoy haciendo un aplicativo para controlar las horas para una cabina de internet, en una de sus columnas agrego los jlabel, para que aqui me muestre lo minutos en tiempo regresivo que quede por cada pc, asu vez queria que se actualice constantemente cada segundo mostrando los minutos que le queda en cada pc. //CODIGO DEL HILO para que actualice el jlabel public class Tiempos extends Thread {
Pc pc; JLabel lblHora; public Tiempos( Pc pc, JLabel lblHora) { this.pc = pc; this.lblHora = lblHora; }
@Override public void run() { long diferencia = 0; //pc.cabinaPc(minutos); do { try { diferencia = (pc.getHoraSalida().getTime() - new Date().getTime()) / 1000; //seg Thread.sleep(1000); lblHora.setText(pc.formatoTimeRest(diferencia)); if (diferencia==0) { int i=JOptionPane.showConfirmDialog(null, "¿Continuas?"); System.out.println("i: "+i); if (i==0) { } } } catch (Exception e) { } } while (diferencia > 0); }} //----------------------------------------------------------------------- public class Tabla { // clase que configura los datos a cargar de una BD a un arraylist public ArrayList<Pc> listPc = new ArrayList<>(); // JLabel lblTiempoRest = new JLabel(); //Tiempos[] t = new Tiempos[15]; Connection con; Tiempos t; Pc pc;
public void ver_tabla(JTable tabla) { con = Conectar.getConexion(); tabla.setDefaultRenderer(Object.class, new Render()); String[] titulo = {"ID", "PC", "H. INCIO", "H. SALIDA", "TIEMPO TOT.", "PAGO", "T. RESTANTE", "CONTINUAR", "SALIR"}; DefaultTableModel modelo = new DefaultTableModel(null, titulo) { public boolean isCellEditable(int row, int column) {//bloquear edicion return false; } }; tabla.setModel(modelo); tabla.setRowHeight(30); tabla.setPreferredScrollableViewportSize(tabla.getPreferredSize()); tabla.getColumnModel().getColumn(0).setPreferredWidth(25); tabla.getColumnModel().getColumn(1).setPreferredWidth(80); tabla.getColumnModel().getColumn(2).setPreferredWidth(100); tabla.getColumnModel().getColumn(3).setPreferredWidth(80); tabla.getColumnModel().getColumn(4).setPreferredWidth(100); tabla.getColumnModel().getColumn(5).setPreferredWidth(40);
JLabel lblTimeRestante = new JLabel("00:00:00"); lblTimeRestante.setName("lblTrest"); JButton btnIniciar = new JButton("CONTINUAR"); btnIniciar.setName("C"); JButton btnEliminar = new JButton("TERMINAR"); btnEliminar.setName("T"); pc = new Pc(); listPc = SentenciasPc.ListarDatosPc(); //CARGAR DATOS DE LA BASE DE DATOS if (listPc.size() > 0) { Pc pc1 = listPc.get(0); t = new Tiempos(pc, lblTimeRestante); t.start(); System.out.println("PC " + pc1.getPc() + lblTimeRestante.getText());
for (int i = 0; i < listPc.size(); i++) { Object fila[] = new Object[9]; pc = listPc.get(i); //PASAR DE UN ARRAYLIST A UN OBJETO DE LA MISMA CLASE fila[0] = pc.getId(); fila[1] = pc.getPc(); fila[2] = pc.getHoraIngreso(); fila[3] = pc.getHoraSalida(); fila[4] = pc.formatoTimeRest(pc.getTiempoTotal() * 60); fila[5] = pc.getPagoInternet(); fila[6] = lblTimeRestante.getText(); // ESTE JLABEL QUIERO QUE SE ACTUALICE DE ACUERDO AL HILO fila[7] = btnIniciar; fila[8] = btnEliminar; modelo.addRow(fila); } } } }
Hola buenos dias, gracias anticipadas por la respuesta.
Estoy haciendo un aplicativo para controlar las horas para una cabina de internet, en una de sus columnas agrego los jlabel, para que aqui me muestre lo minutos en tiempo regresivo que quede por cada pc, asu vez queria que se actualice constantemente cada segundo mostrando los minutos que le queda en cada pc.
//CODIGO DEL HILO para que actualice el jlabel
public class Tiempos extends Thread {
Pc pc;
JLabel lblHora;
public Tiempos( Pc pc, JLabel lblHora) {
this.pc = pc;
this.lblHora = lblHora;
}
@Override
public void run() {
long diferencia = 0;
//pc.cabinaPc(minutos);
do {
try {
diferencia = (pc.getHoraSalida().getTime() - new Date().getTime()) / 1000; //seg
Thread.sleep(1000);
lblHora.setText(pc.formatoTimeRest(diferencia));
if (diferencia==0) {
int i=JOptionPane.showConfirmDialog(null, "¿Continuas?");
System.out.println("i: "+i);
if (i==0) {
}
}
} catch (Exception e) {
}
} while (diferencia > 0);
}}
//-----------------------------------------------------------------------
public class Tabla { // clase que configura los datos a cargar de una BD a un arraylist
public ArrayList<Pc> listPc = new ArrayList<>();
// JLabel lblTiempoRest = new JLabel();
//Tiempos[] t = new Tiempos[15];
Connection con;
Tiempos t;
Pc pc;
public void ver_tabla(JTable tabla) {
con = Conectar.getConexion();
tabla.setDefaultRenderer(Object.class, new Render());
String[] titulo = {"ID", "PC", "H. INCIO", "H. SALIDA", "TIEMPO TOT.", "PAGO", "T. RESTANTE", "CONTINUAR", "SALIR"};
DefaultTableModel modelo = new DefaultTableModel(null, titulo) {
public boolean isCellEditable(int row, int column) {//bloquear edicion
return false;
}
};
tabla.setModel(modelo);
tabla.setRowHeight(30);
tabla.setPreferredScrollableViewportSize(tabla.getPreferredSize());
tabla.getColumnModel().getColumn(0).setPreferredWidth(25);
tabla.getColumnModel().getColumn(1).setPreferredWidth(80);
tabla.getColumnModel().getColumn(2).setPreferredWidth(100);
tabla.getColumnModel().getColumn(3).setPreferredWidth(80);
tabla.getColumnModel().getColumn(4).setPreferredWidth(100);
tabla.getColumnModel().getColumn(5).setPreferredWidth(40);
JLabel lblTimeRestante = new JLabel("00:00:00");
lblTimeRestante.setName("lblTrest");
JButton btnIniciar = new JButton("CONTINUAR");
btnIniciar.setName("C");
JButton btnEliminar = new JButton("TERMINAR");
btnEliminar.setName("T");
pc = new Pc();
listPc = SentenciasPc.ListarDatosPc(); //CARGAR DATOS DE LA BASE DE DATOS
if (listPc.size() > 0) {
Pc pc1 = listPc.get(0);
t = new Tiempos(pc, lblTimeRestante);
t.start();
System.out.println("PC " + pc1.getPc() + lblTimeRestante.getText());
for (int i = 0; i < listPc.size(); i++) {
Object fila[] = new Object[9];
pc = listPc.get(i); //PASAR DE UN ARRAYLIST A UN OBJETO DE LA MISMA CLASE
fila[0] = pc.getId();
fila[1] = pc.getPc();
fila[2] = pc.getHoraIngreso();
fila[3] = pc.getHoraSalida();
fila[4] = pc.formatoTimeRest(pc.getTiempoTotal() * 60);
fila[5] = pc.getPagoInternet();
fila[6] = lblTimeRestante.getText(); // ESTE JLABEL QUIERO QUE SE ACTUALICE DE ACUERDO AL HILO
fila[7] = btnIniciar;
fila[8] = btnEliminar;
modelo.addRow(fila);
}
}
}
}