Acceder a los elementos internos de un jFrame desde otra clase

publicado por: Anonymous

Lo que quiero saber es como puedo acceder a elementos como jTextField o jLabel de un jFrame sin ponerlos public static desde dentro de las configuraciones de netbeans

solución

Simplemente provee a las propiedades getters y setters para acceder a ellas.

private JTextField txtNombre;

public JTextField getTxtNombre() { return txtNombre; }

public void setTxtNombre(JTextField txtNombre) {
    this.txtNombre = txtNombre;
}

Adicionalmente, te recomiendo dividir tu aplicación en capas. Puedes tener la lógica en una capa, en otra los formularios y en otra las clases que manejan los formularios (controladores), usando el patrón MVC.

Por ejemplo:

Formulario

public class FormRegistro extends JFrame {

    private JButton btnRegistrar;
    private FormRegistroController controller;

    public FormRegistro() {
        super("Registro de personal");
        controller = new FormRegistroController(this);
        initComponents();
    }

    private void initComponents() {
        ...
        btnRegistrar = new JButton("Registrar");
        btnRegistrar.addActionListener(controller);
    }
}

Este formulario será manejado por un controlador. Este se encargará de escuchar los eventos que ocurran en el formulario y actuará de acuerdo a ellos.

Controlador

public class FormRegistroController implements ActionListener {

    private FormRegistro ui;

    public FormRegistroController(FormRegistro ui) {
        this.ui = ui;
    }

    @Override
    public void actionPerformed(ActionEvent event) {
        String actionCommand = event.getActionCommand();
        if(actionCommand.equals("Registrar")) {
           // se ha clickeado el botón registrar
           String nombre = ui.getTextNombre().getText();
           // obtienes los demás valores y luego registras
        }
    }
}

Es bueno que desde el principio te preocupes por seguir buenos estándares y prácticas de programación, reforzarán mucho tu aprendizaje. Más adelante, cuando veas base de datos puedes usar el patrón DAO o Repository por ejemplo.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *