Java - Problema con un listener

 
Vista:

Problema con un listener

Publicado por javier (3 intervenciones) el 02/03/2020 12:07:05
Hola, primero de todo disculpad todos los errores que hayan, es la primera vez que programo y seguro que hay errores grabe.

Tengo un buscador donde ponen un nombre, hago una búsqueda en la base de datos y si encuentro un resultado lo muestro y si encuentra más de uno vuelco todo en una tabla

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private void imprimir_resultado_empleado( ResultSet datos)throws SQLException
{
    int filas = 0;
    Principal app = Principal.principal();
    if (datos.last())
    {
        filas = datos.getRow();
        datos.beforeFirst();
    }
    if (filas == 1)
    {
        datos.next();
        app.EmpID.setText(datos.getString("id"));
        app.EmpNombre.setText(datos.getString("Empleado"));
        app.EmpSucursal.setText(datos.getString("Sucursal"));
 
    }
    else if (filas == 0)
    {
        JFrame frame = new JFrame("JOptionPane showMessageDialog");
        JOptionPane.showMessageDialog( frame, "No existen conincidencias para esta consulta.\n", "AVISO",
        JOptionPane.INFORMATION_MESSAGE);
    }
    else
    {
       Tabla listado_empleados = new Tabla(datos);
       String id = listado_empleados.getId();
       System.out.println(id); // al ejecutar esto da null y tendría que ser el id seleccionado
      }
}

La idea es que al clicar sobre uno de las filas de la tabla me devuelva el id, para ello he usado el listener pero el problema está que el programa no espera a que se clique sobre una de las filas, y el valor del id es null


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Tabla extends javax.swing.JFrame {
    private ResultSet datos;
    private DefaultTableModel modelo;
    private JTable tabla;
    private String id;
 
    public Tabla(ResultSet listadoUsuarios) throws SQLException  {
        datos = listadoUsuarios;
        modelo = new DefaultTableModel();
        initComponents();
        config_columnas();
        rellena_filas();
        mostrar_tabla();
        listener();
    }
 
    private void listener() {
        tabla.getSelectionModel().addListSelectionListener(new ListSelectionListener()
        {
            public void valueChanged(ListSelectionEvent event)
            {
                id = tabla.getValueAt(tabla.getSelectedRow(), 0).toString();
                dispose();
            }
        });
    }
    public String getId (){ return id;}


hay alguna forma de que el programa espere hasta que el usuario selecciona una fila de la tabla?
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