Java - como refrescar jtexfield enlazado con porpiedad de una clase

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

como refrescar jtexfield enlazado con porpiedad de una clase

Publicado por sam (2 intervenciones) el 20/02/2019 20:28:17
Hola que tal amigos de lwp!

Tengo un jtexfield donde su propiedad text esta enlazada con la propiedad descripcion de una clase Articulo que hice yo

Cuando escribo algo en el jtexfield, el valor se guarda automaticamente en el la propiedad (descripcion) , pero si modifico el valor de la propiedad descripcion por codigo, el jtexfiled no se modifica
Quisiera saber que me falta para que se pueda actualizar automaticamente el jtexfield, si se cambia el valor de descripcion. Entendia en el tutorial que segui, que solo asigando valor se actualiza, pero no pasa eso

a continuacion envio codigo de la clase Articulo que arme, siguiendo el tutorial para hace el enlazado de la clase con objetos visulaes

desde ya muchas gracias

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
package modelo;
 
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
 
public class Articulo {
    private int id;
    private String descripcion;
    private String codBarra;
    private double precioCpra;
    private double precioVta;
    private float utilidad;
    private float iva;
    private float itc;//impuestos internos
    private float th_ti;//tasa hidrica-tasa infraestructura
    private ArticuloRubro rubro;
    private String estado;
    private ArrayList<Deposito> listaDepositos;
 
    public double stock()
    {
        double stck=0;
        if(this.getListaDepositos()!=null)
        {
            for (Deposito deposito : this.getListaDepositos()) {
                stck+=deposito.stockArticulo(this);
            }
        }
        return stck;
    }
 
    public Articulo() {
        this.rubro=new ArticuloRubro();
        this.listaDepositos=new ArrayList<>();
    }
 
    public Articulo(int id, String descripcion, String codBarra, double precioCpra, double precioVta, float utilidad, float iva, float itc, float th_ti, ArticuloRubro rubro, String estado) {
        this.id = id;
        this.descripcion = descripcion;
        this.codBarra = codBarra;
        this.precioCpra = precioCpra;
        this.precioVta = precioVta;
        this.utilidad = utilidad;
        this.iva = iva;
        this.itc = itc;
        this.th_ti = th_ti;
        this.rubro = rubro;
        this.estado = estado;
    }
 
    /**
     * @return the id
     */
    public int getId() {
        return id;
    }
 
    /**
     * @param id the id to set
     */
    public void setId(int id) {
        int oldId = this.id;
        this.id = id;
        propertyChangeSupport.firePropertyChange(PROP_ID, oldId, id);
    }
 
    /**
     * @return the descripcion
     */
    public String getDescripcion() {
        return descripcion;
    }
 
    /**
     * @param descripcion the descripcion to set
     */
    public void setDescripcion(String descripcion) {
        java.lang.String oldDescripcion = this.descripcion;
        this.descripcion = descripcion;
        propertyChangeSupport.firePropertyChange(PROP_DESCRIPCION, oldDescripcion, descripcion);
    }
 
    /**
     * @return the codBarra
     */
    public String getCodBarra() {
        return codBarra;
    }
 
    /**
     * @param codBarra the codBarra to set
     */
    public void setCodBarra(String codBarra) {
        java.lang.String oldCodBarra = this.codBarra;
        this.codBarra = codBarra;
        propertyChangeSupport.firePropertyChange(PROP_CODBARRA, oldCodBarra, codBarra);
    }
 
    /**
     * @return the precioCpra
     */
    public double getPrecioCpra() {
        return precioCpra;
    }
 
    /**
     * @param precioCpra the precioCpra to set
     */
    public void setPrecioCpra(double precioCpra) {
        double oldPrecioCpra = this.precioCpra;
        this.precioCpra = precioCpra;
        propertyChangeSupport.firePropertyChange(PROP_PRECIOCPRA, oldPrecioCpra, precioCpra);
    }
 
    /**
     * @return the precioVta
     */
    public double getPrecioVta() {
        return precioVta;
    }
 
    /**
     * @param precioVta the precioVta to set
     */
    public void setPrecioVta(double precioVta) {
        double oldPrecioVta = this.precioVta;
        this.precioVta = precioVta;
        propertyChangeSupport.firePropertyChange(PROP_PRECIOVTA, oldPrecioVta, precioVta);
    }
 
    /**
     * @return the utilidad
     */
    public float getUtilidad() {
        return utilidad;
    }
 
    /**
     * @param utilidad the utilidad to set
     */
    public void setUtilidad(float utilidad) {
        float oldUtilidad = this.utilidad;
        this.utilidad = utilidad;
        propertyChangeSupport.firePropertyChange(PROP_UTILIDAD, oldUtilidad, utilidad);
    }
 
    /**
     * @return the iva
     */
    public float getIva() {
        return iva;
    }
 
    /**
     * @param iva the iva to set
     */
    public void setIva(float iva) {
        float oldIva = this.iva;
        this.iva = iva;
        propertyChangeSupport.firePropertyChange(PROP_IVA, oldIva, iva);
    }
 
    /**
     * @return the itc
     */
    public float getItc() {
        return itc;
    }
 
    /**
     * @param itc the itc to set
     */
    public void setItc(float itc) {
        float oldItc = this.itc;
        this.itc = itc;
        propertyChangeSupport.firePropertyChange(PROP_ITC, oldItc, itc);
    }
 
    /**
     * @return the th_ti
     */
    public float getTh_ti() {
        return th_ti;
    }
 
    /**
     * @param th_ti the th_ti to set
     */
    public void setTh_ti(float th_ti) {
        float oldTh_ti = this.th_ti;
        this.th_ti = th_ti;
        propertyChangeSupport.firePropertyChange(PROP_TH_TI, oldTh_ti, th_ti);
    }
 
    /**
     * @return the rubro
     */
    public ArticuloRubro getRubro() {
        return rubro;
    }
 
    /**
     * @param rubro the rubro to set
     */
    public void setRubro(ArticuloRubro rubro) {
        modelo.ArticuloRubro oldRubro = this.rubro;
        this.rubro = rubro;
        propertyChangeSupport.firePropertyChange(PROP_RUBRO, oldRubro, rubro);
    }
 
    /**
     * @return the estado
     */
    public String getEstado() {
        return estado;
    }
 
    /**
     * @param estado the estado to set
     */
    public void setEstado(String estado) {
        java.lang.String oldEstado = this.estado;
        this.estado = estado;
        propertyChangeSupport.firePropertyChange(PROP_ESTADO, oldEstado, estado);
    }
 
    /**
     * @return the listaDepositos
     */
    public ArrayList<Deposito> getListaDepositos() {
        return listaDepositos;
    }
 
    /**
     * @param listaDepositos the listaDepositos to set
     */
    public void setListaDepositos(ArrayList<Deposito> listaDepositos) {
        java.util.ArrayList<modelo.Deposito> oldListaDepositos = this.listaDepositos;
        this.listaDepositos = listaDepositos;
        propertyChangeSupport.firePropertyChange(PROP_LISTADEPOSITOS, oldListaDepositos, listaDepositos);
    }
    private final transient PropertyChangeSupport propertyChangeSupport = new java.beans.PropertyChangeSupport(this);
    public static final String PROP_ID = "id";
    public static final String PROP_DESCRIPCION = "descripcion";
    public static final String PROP_CODBARRA = "codBarra";
    public static final String PROP_PRECIOCPRA = "precioCpra";
    public static final String PROP_PRECIOVTA = "precioVta";
    public static final String PROP_UTILIDAD = "utilidad";
    public static final String PROP_IVA = "iva";
    public static final String PROP_ITC = "itc";
    public static final String PROP_TH_TI = "th_ti";
    public static final String PROP_RUBRO = "rubro";
    public static final String PROP_ESTADO = "estado";
    public static final String PROP_LISTADEPOSITOS = "listaDepositos";
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
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

como refrescar jtexfield enlazado con porpiedad de una clase

Publicado por Billy Joel (876 intervenciones) el 21/02/2019 16:24:36
Bueno no estoy seguro como se utiliza el PropertyChangeSupport, pero si te puedo dar pistas de lo que necesitas.

Si entiendo quieres modificar las propiedades de una JFrame o específicamente la propiedad text de un JTextField y hacerlo en dos vías, en otras palabras si modificas la propiedad text del JTextField que se modifique la propiedad descripción del objeto Articulo.

El truo está en entender que los objetos pasan por referencia, en otras palabras los cambios que pasan en un objeto se reflejan en toda la aplicación.

Mira te voy hacer un ejemplo corto

Creamos una clase Articulo como la tuya
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public class Articulo {
    private Autor autor;
    private String fecha;
    private String titulo;
    private String contenido;
 
    /**
     * @return the autor
     */
    public Autor getAutor() {
        return autor;
    }
 
    /**
     * @param autor the autor to set
     */
    public void setAutor(Autor autor) {
        this.autor = autor;
    }
 
    /**
     * @return the fecha
     */
    public String getFecha() {
        return fecha;
    }
 
    /**
     * @param fecha the fecha to set
     */
    public void setFecha(String fecha) {
        this.fecha = fecha;
    }
 
    /**
     * @return the titulo
     */
    public String getTitulo() {
        return titulo;
    }
 
    /**
     * @param titulo the titulo to set
     */
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
 
    /**
     * @return the contenido
     */
    public String getContenido() {
        return contenido;
    }
 
    /**
     * @param contenido the contenido to set
     */
    public void setContenido(String contenido) {
        this.contenido = contenido;
    }
}

Creamos una clase Autor
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public class Autor {
    private String nombre;
    private String apellido;
    private String dni;
 
    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }
 
    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
 
    /**
     * @return the apellido
     */
    public String getApellido() {
        return apellido;
    }
 
    /**
     * @param apellido the apellido to set
     */
    public void setApellido(String apellido) {
        this.apellido = apellido;
    }
 
    /**
     * @return the dni
     */
    public String getDni() {
        return dni;
    }
 
    /**
     * @param dni the dni to set
     */
    public void setDni(String dni) {
        this.dni = dni;
    }
}

Y creamos una clase Principal
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
31
32
33
34
35
36
37
38
39
public class Principal {
 
    public static void showAutor(Autor a) {
        System.out.println("Mostrando datos del autor: "
                + "\nNombre: " + a.getNombre()
                + "\nApellido: " + a.getApellido()
                + "\nDNI: " + a.getDni());
    }
 
    public static void main(String[] args) {
        Autor autor = new Autor();
        autor.setNombre("Billy");
        autor.setApellido("Johnson");
        autor.setDni("1234567890");
 
        Articulo articulo = new Articulo();
        articulo.setAutor(autor);
        articulo.setFecha("20190221");
        articulo.setTitulo("Titulo del articulo");
        articulo.setContenido("Al contrario del pensamiento popular, el texto de Lorem Ipsum no es simplemente texto aleatorio. Tiene sus raices en una pieza cl´sica de la literatura del Latin, que data del año 45 antes de Cristo,");
 
        //Mostramos los datos del autor que hemos creado en el main
        showAutor(autor);
 
        System.out.println("-------------------------------------------------");
        System.out.println("Ahora mostramos los datos del autor que está dentro del articulo");
        showAutor(articulo.getAutor());
 
        System.out.println("-------------------------------------------------");
        System.out.println("Modificamos el nombre del autor que está dentro del aruticulo y mostramos el que está en el main");
        articulo.getAutor().setNombre("Billy Joel");
        showAutor(autor);
 
        System.out.println("-------------------------------------------------");
        System.out.println("Verificamos si el autor del main se modifico");
        showAutor(autor);
 
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

como refrescar jtexfield enlazado con porpiedad de una clase

Publicado por Billy Joel (876 intervenciones) el 21/02/2019 16:41:15
La solución concreta para tu caso es declarar un JTextField en tu clase Articulo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package modelo;
 
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
 
public class Articulo {
    private int id;
    private String descripcion;
    private String codBarra;
    private double precioCpra;
    private double precioVta;
    private float utilidad;
    private float iva;
    private float itc;//impuestos internos
    private float th_ti;//tasa hidrica-tasa infraestructura
    private ArticuloRubro rubro;
    private String estado;
    private ArrayList<Deposito> listaDepositos;
    private JTextField txtDescripcion;

Le declaras su set
1
2
3
public void setTxtDescripcion(JTextField txtDescripcion){
    this.txtDescripcion = txtDescripcion;
}

Entocnes en el método setDescripcion...
1
2
3
4
5
6
7
8
public void setDescripcion(String descripcion) {
    java.lang.String oldDescripcion = this.descripcion;
    this.descripcion = descripcion;
    propertyChangeSupport.firePropertyChange(PROP_DESCRIPCION, oldDescripcion, descripcion);
    if(txtDescripcion != null){
        txtDescripcion .setText(descripcion);
    }
}

Con eso debe ser suficiente para resolver tu pregunta.
Pase por referencia es la clave aquí

Saludos!!
;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

como refrescar jtexfield enlazado con porpiedad de una clase

Publicado por Tom (1831 intervenciones) el 21/02/2019 18:18:34
Relee el tutorial que sea, y el ejemplo del API.

https://docs.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html
https://docs.oracle.com/javase/7/docs/api/java/beans/PropertyChangeSupport.html

No sirve de mucho que hagas firePropertyChange si no hay ningún listener asociado al propertyChangeSupport. O sea, en algún momento has de asociar un listener que haga el cambio necesario en tu TextField.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 4
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

como refrescar jtexfield enlazado con porpiedad de una clase

Publicado por sam (2 intervenciones) el 23/02/2019 03:38:18
Muchas gracias a todos por su ayuda
Logré solucionar el problema. Volví a definir la clase, usando el asistente de insertar código para agregar propiedades a la clase

Luego en el jframe, Creo una propiedad. Artículo articulo=new Artículo();
Con esto, luego realizó el enlace de los componentes visuales con las propiedades de la clase articulo, y se actualiza en ambas direcciones

Este es el tutorial que seguí
https://www.apuntesdejava.com/2010/10/swing-componentes-enlazados-un-bean.html?m=1
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