Java - Actualizar JTable

 
Vista:
sin imagen de perfil
Val: 21
Ha disminuido su posición en 24 puestos en Java (en relación al último mes)
Gráfica de Java

Actualizar JTable

Publicado por guille (13 intervenciones) el 15/05/2019 21:36:05
Buenas tardes.
Tengo el siguiente problema. al hacer doble click en la celda de un JTable, llama a una clase externa para modificar cierta info en la BD. Al finalizar la ejecución de esta clase quisiera que se actualice el JTable, pero el metodo llenarTablaNuevos() es ejecutado al mismo tiempo que se llama la clase, por lo tanto no se actualiza.
Adjunto un recorte del codigo.
Desde ya muchas gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
tablaNuevos.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent mouseEvent) {
    Point point = mouseEvent.getPoint();
    tablaNuevos.rowAtPoint(point);
    if (mouseEvent.getClickCount() == 2 && tablaNuevos.getSelectedRow() != -1) {
        String vCliente=String.valueOf(modTablaNuevos.getValueAt(tablaNuevos.getSelectedRow(),2));
        String vNroPedido=String.valueOf(modTablaNuevos.getValueAt(tablaNuevos.getSelectedRow(),1));
        new consultaPedido(vCliente,vNroPedido);
        llenarTablaNuevos();
 
        }
    }
});
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 147
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Actualizar JTable

Publicado por Yamil Bracho (2302 intervenciones) el 15/05/2019 22:24:30
Este es el tipico problema que se puede solucionar con una callback.
Haces lo siguiente :

) Crear una interface
1
2
3
public interface ResultListener {
    void onResult(string result);
}

2) haces que tu clase principal implemente esa interface, es decir

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class MainClass implements ResultListener {
   ....
 
    tablaNuevos.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent mouseEvent) {
            Point point = mouseEvent.getPoint();
            tablaNuevos.rowAtPoint(point);
            if (mouseEvent.getClickCount() == 2 && tablaNuevos.getSelectedRow() != -1) {
                String vCliente = String.valueOf(modTablaNuevos.getValueAt(tablaNuevos.getSelectedRow(),2));
                String vNroPedido = String.valueOf(modTablaNuevos.getValueAt(tablaNuevos.getSelectedRow(),1));
 
                new consultaPedido(vCliente,vNroPedido, MainClass.this);
            }
        }
    });
 
    void onResult(string result) {
        llenarTablaNuevos();
    }
 
}

3) Y en la clase ConsultaPedido, en su constructor

1
2
3
4
5
6
7
8
9
10
11
public class ConsultaPedido {
    private ResultListener m_Listener;
    ...
 
    // Constructor  	
    public ConsultaPedido(string vCliente, string vNroPedido, ResultListener listener) {
        m_Listener = listener
    }
 
    y cuando hayas hecho la operacion y estes listo para actualizar el JTable haces
    m_listener.onResult("OK");

La otra posibilidad es que uses una de las interfaces que Java ya tiene para tal fin con seria ActionListener...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar