Pass an instance of a class with data to another class in Java

1

I have a class with GETTERS and SETTERS of the attributes and I want to pass the instance of this class with the information it has stored, to another class in order to use its data with the GETTERS.

public class Data_user

package datos;

public class Dato_usuarios {

    private int id;
    private String nombre;
    private String apellido;
    private String usuario;
    private String contrasena;

    public Dato_usuarios(int id, String nombre, String apellido, String usuario, String contrasena) {
        super();
        this.id = id;
        this.nombre = nombre;
        this.apellido = apellido;
        this.usuario = usuario;
        this.contrasena = contrasena;
    }

    public Dato_usuarios() {
        super();
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getApellido() {
        return apellido;
    }
    public void setApellido(String apellido) {
        this.apellido = apellido;
    }
    public String getUsuario() {
        return usuario;
    }
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }
    public String getContrasena() {
        return contrasena;
    }
    public void setContrasena(String contrasena) {
        this.contrasena = contrasena;
    }

}

public class View_user extends JFrame

// Declarada globalmente
// En una parte de esta clase, guardo los datos que el usuario escribe en los JTextField con d_u.setNombre(); etc...
Dato_usuarios d_u = new Dato_usuarios();

JButton btnEditar = new JButton("Editar");
        btnEditar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                // Instancio la clase a la que quiero pasarle "Dato_usuarios" y su información almacenada
                Vista_editarusuario v_eu = new Vista_editarusuario();
                v_eu.setVisible(true);
                v_eu.setLocationRelativeTo(null);
                // Le asigno la instancia directamente
                v_eu.d_u = d_u;
            }
        });

public class Vista_editorusuario extends JFrame

// Declarada globalmente
Dato_usuarios d_u = new Dato_usuarios();

Am I passing the instance incorrectly? What is the correct way to do it?

    
asked by Robert Gomez 09.11.2017 в 01:13
source

1 answer

2

Achieving what you want is simple, you only have to pass the object that you create from class d_u to class Vista_editarusuario . Which, you can do it using the constructor.

JButton btnEditar = new JButton("Editar");
    btnEditar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            // Instancio la clase a la que quiero pasarle "Dato_usuarios" y su información almacenada
            Vista_editarusuario v_eu = new Vista_editarusuario(d_u); // Pasas el objeto d_u
            v_eu.setVisible(true);
            v_eu.setLocationRelativeTo(null);
            // Le asigno la instancia directamente
            // v_eu.d_u = d_u;
        }
    });

Vista_editarusuario

public class Vista_editarusuario extends JFrame {

    // Objeto que almacenara el objeto recibido en el cosntructor
    Dato_usuarios d_u;

    // Constructor
    public Vista_editarusuario(Dato_usuarios d_u) {

        // Almacena el objeto recibido en el objeto d_u;
        this.d_u = d_u;
    }

    ...

}

Some corrections

  • The words that make up the name of your classes are separated by a hyphen (_), which is wrong and makes the readability of your code difficult. By convention the words that make up the name of a class must start with a capital letter.

    Vista_editarusuario ❌
    VistaEditarUser ✔

  • The names of the variables should give an idea of what they are, so it is not advisable to use letters or signs. This statement v_eu.d_u = d_u; is particularly difficult to read. To objects (variables) you must give them meaningful names, which define what they are.

    d_u ❌
    UserData ✔

answered by 09.11.2017 / 01:58
source