Java - Encapsular elementos jFrame

 
Vista:
sin imagen de perfil

Encapsular elementos jFrame

Publicado por David (4 intervenciones) el 09/06/2016 00:05:15
Saludos!,

Soy nuevo en Java por lo que no se mucho del lenguaje en sí y su metodología.

Estoy desarrollando una Agenda de contactos y para esto estoy haciendo uso de varias clases, lo que quiero saber es como puedo hacer para acceder a los elementos privados de un Frame, como jTextField y otros, se que puedo ponerlos public static en las propiedades del IDE pero eso sería una mala práctica.

He leido que podría encapsularlo en el constructor del Frame, algo como esto:

1
2
3
4
5
6
7
8
9
public VentanaAgr_Contacto(Contacto contacto) {
        initComponents();
        txt_Nombre.setText(contacto.getNombre());
        txt_Apellido.setText(contacto.getApellido());
        txt_Movil.setText(Integer.toString(contacto.getMovil()));
        txt_Casa.setText(Integer.toString(contacto.getCasa()));
        txt_Personal.setText(contacto.getPersonal());
        txtPanel_Direccion.setText(contacto.getDireccin());
}

también según dicen se podría utilizar un encapsulamiento parecido al que se aplica a los POJO para acceder a los campos desde fuera de la clase:

1
2
3
public javax.swing.JTextField gettxt_Nombre() {
    return txt_Nombre;
}

Lo que quiero saber es, cual es el método correcto para hacerlo, por que segun entiendo esa forma de encapsulación es propia de las clases que no tienen dependencia de ninguna otra.

Gracias de antemano por sus respuestas.
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

Encapsular elementos jFrame

Publicado por David (4 intervenciones) el 09/06/2016 04:47:49
Agradezco tu pronta respuesta, pero no estoy implementando la herencia en este proyecto y como dice el artículo no sería preferible aplicar protected a campos, pues debilitaría el encapsulamiento.
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

Encapsular elementos jFrame

Publicado por J. Carlos UTTT (16 intervenciones) el 17/06/2016 10:52:17
Hola mira pues bueno yo uso la siguiente manera es crear un objeto y mandarle los parametros en este caso las cajas de texto
en la otra clase java recibir los parametros por medio de un constructor y usarlos a nuestro antojo, la verdad por ahora desconozco si se pueda como en android que solo creas un objeto en el layout completo ene este caso el jFrame y luego con el objeto solo traer los elementos que esten en ese layout pero pues en java yo lo hice de esta manera, disculpa si no suena muy explicado habia hecho una respuesta mas explicita pero mi internet fallo y se perdio mi respuesta :( y bueno ahora solo puse lo importante y algo de codigo saludos!


/**
* Paso 1
* Con esta instancia estoy enviando mis cajas de texto, botones, txtarea nose a la clase validar
* para poder manipularlas, en la clase validar las recibo mediante un constructor y les asigno valor para poder
* usarlas
* Nos pasamos a la clase Validar --->
*/
Validar val = new Validar(txtMatricula,txtNombre,txtApellidoP,txtApellidoM,txtOcupacion,btnInsertar,btnMostrar);


Vamos a enviar los datos por medio del contructor...


/**
* Paso 2
* Deaclaro txt areas, cajas de texto botones etc lo q tenga en su jFrame (dependiendo de cada poryecto de cada uno)
* las declaro para poder asignarles valor mediante el constructor
*/
JTextField Matricula;
JTextField Nombre;
JTextField ApellidoP;
JTextField ApellidoM;
JTextField Ocupacion;
JButton Insertar;
JButton Mostrar;


/**
* Paso 3
* Con el contructor les asigo valor para poder hacer mis validaciones
*/
public Validar(JTextField _txtMatricula, JTextField _txtNombre, JTextField _txtApellidoP, JTextField _txtApellidoM, JTextField _txtOcupacion, JButton _btnInsertar, JButton _btnMostrar) {

this.Matricula = _txtMatricula;
this.Nombre = _txtNombre;
this.ApellidoP = _txtApellidoP;
this.ApellidoM = _txtApellidoM;
this.Ocupacion = _txtOcupacion;

this.Insertar = _btnInsertar;
this.Mostrar = _btnMostrar;

}

/**
* Paso 4
* Pues aqui es mi metodo validar!
* y nos pasamos al jFrame --->
* @return true
*/
public boolean ValidarTxts() {

boolean esCorrecto = true;
String Mensaje = "";
// Component com = null;
if (this.Matricula.getText().isEmpty() == true) {
esCorrecto = false;
Mensaje += "\nIngresa tu matricula.";
// com = this.Matricula;
}

}


Insertar = new Persona();
/**
* Pues aqui solo con el objeto mando a traer el metodo :D
*/
if (val.ValidarTxts() == true) {
Insertar.setMatricula(Integer.parseInt(txtMatricula.getText()));
Insertar.setNombre(txtNombre.getText());
Insertar.setApellidoP(txtApellidoP.getText());
Insertar.setApellidoM(txtApellidoM.getText());
Insertar.setOcupacion(txtOcupacion.getText());
lis.addFirst(Insertar);
val.LimpiarCaja();
Mostrar();
JOptionPane.showMessageDialog(null, "Datos insertados, ¡Gracias " + Insertar.getNombre()+"!");
} else {
System.out.println("Salio algo mal");
}
}
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