Passing data from one JTable to the fields of another JFrame

0

How can I do to pass data from one JTable to another JFrame?

For example: I have 3 JTextField and 2 JCombobox in a JFrame which are what I should fill in from JTable when pressing in a JFrame different.

I have tried to intervene in the KeyPressed event.

private void jTablaLocalidadesKeyPressed(java.awt.event.KeyEvent evt) {                                             
       if ((evt.getKeyCode() == KeyEvent.VK_ENTER)) {
            int filaSelecionada = jTablaLocalidades.getSelectedRow();
            if (filaSelecionada == -1) {
                JOptionPane.showMessageDialog(null, "No se selecciono ninguna fila");

           }else{
                modelo = (DefaultTableModel)jTablaLocalidades.getModel();
                Localidad loc = (Localidad)modelo.getValueAt(filaSelecionada, 1);
                String L = loc.getNombre();
                Localidad CP = (Localidad)modelo.getValueAt(filaSelecionada, 2);
                int codPostal = CP.getCodpostal();
                Localidad DDN = (Localidad)modelo.getValueAt(filaSelecionada, 3);
                String discNac = DDN.getDDN();
                Localidad Provincia = (Localidad)modelo.getValueAt(filaSelecionada, 4);
                int prov = Provincia.getIdprovincia();
                Localidad Zona = (Localidad)modelo.getValueAt(filaSelecionada, 5);
                int Z = Zona.getIdzona();
                ///////////////

                this.agregarCliente.jtxtLocalidad.setText(L);
                this.agregarCliente.jtxtCP.setText(String.valueOf(codPostal));
                this.agregarCliente.jtxtDDN.setText(discNac);
                this.agregarCliente.jcboProvinvias.setSelectedItem(String.valueOf(prov));
                this.agregarCliente.jcboZona.setSelectedItem(String.valueOf(Z));
            }
        }
    } 

I get the following error.

java.lang.ClassCastException: java.lang.String can not be cast to Data.Locality

That is the error that comes to me. I've also tried doing.

this.agregarCliente.jcboProvinvias.setSelectedItem(modelo.getValueAt(filaSelecionada, 4));

It does not work either, what that code does to me simply by pressing enter on my table it passes the next record and so on if pressing enter.

Class Localidad :

public class Localidad {
    private int idlocalidad;
    private String nombre;
    private int codpostal;
    private String DDN;
    private int idprovincia;
    private int idzona;

    public Localidad() {
    }

    public Localidad(int idlocalidad, String nombre) {
        this.idlocalidad = idlocalidad;
        this.nombre = nombre;
    }

    public int getIdlocalidad() {
        return idlocalidad;
    }

    public void setIdlocalidad(int idlocalidad) {
        this.idlocalidad = idlocalidad;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getCodpostal() {
        return codpostal;
    }

    public void setCodpostal(int codpostal) {
        this.codpostal = codpostal;
    }

    public String getDDN() {
        return DDN;
    }

    public void setDDN(String DDN) {
        this.DDN = DDN;
    }

    public int getIdprovincia() {
        return idprovincia;
    }

    public void setIdprovincia(int idprovincia) {
        this.idprovincia = idprovincia;
    }

    public int getIdzona() {
        return idzona;
    }

    public void setIdzona(int idzona) {
        this.idzona = idzona;
    }

    @Override
    public String toString() {
        return nombre;
    }
}

How can I solve it?

    
asked by Gerardo Ferreyra 23.07.2017 в 05:08
source

1 answer

1

Your cells are all of type String , that's why the cast is not. You can transfer the values directly while using setText() .

private void jTablaLocalidadesKeyPressed(java.awt.event.KeyEvent evt) {                                             
       if ((evt.getKeyCode() == KeyEvent.VK_ENTER)) {
            int filaSelecionada = jTablaLocalidades.getSelectedRow();
            if (filaSelecionada == -1) {
                JOptionPane.showMessageDialog(null, "No se selecciono ninguna fila");

           }else{
                modelo = (DefaultTableModel)jTablaLocalidades.getModel();
                // DefaultTableModel trata las celdas como String 
                String locName = modelo.getValueAt(filaSelecionada, 1);
                String codPostal = modelo.getValueAt(filaSelecionada, 2);
                String discNac = modelo.getValueAt(filaSelecionada, 3);
                String prov = modelo.getValueAt(filaSelecionada, 4);
                String zona = modelo.getValueAt(filaSelecionada, 5);

                // asi los valores se pueden poner tal cual como String
                this.agregarCliente.jtxtLocalidad.setText(locName);
                this.agregarCliente.jtxtCP.setText(codPostal);
                this.agregarCliente.jtxtDDN.setText(discNac);
                // ...
            }
        }
    } 
    
answered by 23.07.2017 в 06:06