Java - Problema con mostrar datos en JTable con Iterator clase Padre y 2 clase hijos

 
Vista:

Problema con mostrar datos en JTable con Iterator clase Padre y 2 clase hijos

Publicado por Maria (1 intervención) el 08/03/2019 11:45:47
Hola, buen día.

Tengo una clase padre Aparato y 2 clases hijos: ventilador y Aire, el problema surge cuando agrego algún aparato a la habitación y no refresca el JTablet, no se que debo estar haciendo mal???

Mostrar de esta forma los datos por cada habitacion:
idAparato aparato
1 Luz
2 Ventilador
3 Aire

Adjunto el código de ambas clases.

INICIO CLASE APARATO
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
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
@Entity
@Inheritance
@DiscriminatorColumn(name = "descripcion", discriminatorType = STRING)
@DiscriminatorValue("Luz")
@Table(name = "aparato")
 
public class Aparato  implements Serializable{
  @Id
  @SequenceGenerator(name="sec_idAparato", initialValue=1, allocationSize=1)
  @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sec_idAparato")
  @Column(name = "idAparato")
  private Integer idAparato;
 
  private char tipoSalida='A';
 
  //@Column(name = "descripcion", nullable = true, unique = false)
  private String descripcion;
 
  @ManyToOne
  @JoinColumn(name = "nroHabitacion")
  private Habitacion unaHabitacion;
 
    public Aparato(Habitacion unaHabitacion) {
        this.idAparato = idAparato;
        this.unaHabitacion = unaHabitacion;
    }
  public Aparato () { };
 
    public Integer getIdAparato() {
        return idAparato;
    }
    public void setIdAparato(Integer idAparato) {
        this.idAparato = idAparato;
    }
    public char getTipoSalida() {
        return tipoSalida;
    }
 
    public void setTipoSalida(char tipoSalida) {
        this.tipoSalida = tipoSalida;
    }
    public Habitacion getUnaHabitacion() {
        return unaHabitacion;
    }
    public void setUnaHabitacion(Habitacion unaHabitacion) {
        this.unaHabitacion = unaHabitacion;
    }
 
    public String getDescripcion() {
        return descripcion;
    }
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
    @Override
    public String toString() {
        return idAparato + "-" + descripcion;
    }
 
    public boolean isIdAparato(int nro){
         boolean retorno = false;
         if( this.getIdAparato() == nro){
             retorno = true;
        }
        return retorno;
    }
}
----FIN CLASE APARATO
 
---INICIO CLASE VENTILADOR
@Entity
@DiscriminatorValue("Ventilador")
public class Ventilador extends Aparato implements Serializable{
 
  @Column(name = "velocidad", nullable = true, unique = false)
  private Integer velocidad=0;
 
   public Ventilador (Habitacion unaHabitacion) {
      super(unaHabitacion);
    };
 
  public Ventilador (Integer velocidad, Habitacion unaHabitacion) {
      super(unaHabitacion);
      this.velocidad = velocidad;
 };
 
  public Ventilador () { };
 
      public Integer getVelocidad() {
        return velocidad;
    }
    public void setVelocidad(Integer velocidad) {
        this.velocidad = velocidad;
    }
    @Override
    public boolean isIdAparato(int nro) {
        return super.isIdAparato(nro); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public void setUnaHabitacion(Habitacion unaHabitacion) {
        super.setUnaHabitacion(unaHabitacion); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public Habitacion getUnaHabitacion() {
        return super.getUnaHabitacion(); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public void setTipoSalida(char tipoSalida) {
        super.setTipoSalida(tipoSalida); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public char getTipoSalida() {
        return super.getTipoSalida(); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public void setIdAparato(Integer idAparato) {
        super.setIdAparato(idAparato); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public Integer getIdAparato() {
        return super.getIdAparato(); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public void setDescripcion(String descripcion) {
        super.setDescripcion(descripcion); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public String getDescripcion() {
        return super.getDescripcion(); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public String toString() {
        return super.toString() + velocidad; //To change body of generated methods, choose Tools | Templates.
    }
 
}
---------FIN CLASE VENTILADOR
 
----------INICIO CLASE Aire
@Entity
@DiscriminatorValue("Aire")
public class Aire extends Aparato implements Serializable{
 
  @Column(name = "temperatura", nullable = true, unique = false)
  private Integer temperatura=0;
 
  @Column(name = "ciclo", nullable = true, unique = false)
  private char ciclo='F';
   public Aire () { };
 
   public Aire(Habitacion unaHabitacion) {
      super(unaHabitacion);
   }
    @Override
    public boolean isIdAparato(int nro) {
        return super.isIdAparato(nro); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public void setUnaHabitacion(Habitacion unaHabitacion) {
        super.setUnaHabitacion(unaHabitacion); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public Habitacion getUnaHabitacion() {
        return super.getUnaHabitacion(); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public void setTipoSalida(char tipoSalida) {
        super.setTipoSalida(tipoSalida); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public char getTipoSalida() {
        return super.getTipoSalida(); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public void setIdAparato(Integer idAparato) {
        super.setIdAparato(idAparato); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public Integer getIdAparato() {
        return super.getIdAparato(); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public void setDescripcion(String descripcion) {
        super.setDescripcion(descripcion); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public String getDescripcion() {
        return super.getDescripcion(); //To change body of generated methods, choose Tools | Templates.
    }
    public Integer getTemperatura () {
        return temperatura;
    }
   public void setTemperatura(Integer temperatura) {
        this.temperatura = temperatura;
    }
    public char getCiclo() {
        return ciclo;
    }
    public void setCiclo(char ciclo) {
        this.ciclo = ciclo;
    }
    @Override
    public String toString() {
        return super.toString()+ciclo+temperatura; //To change body of generated methods, choose Tools | Templates.
    }
}
 
-------FIN AIRE ACONDICIOANDO
 
-----------CLASE HABITACION
@Entity
@Table(name = "habitacion")
public class Habitacion  implements Serializable{
 
  @Id
  @SequenceGenerator(name="sec_nroHabitacion", initialValue=1, allocationSize=1)
  @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sec_nroHabitacion")
  @Column(name = "nroHabitacion")
  private Integer nroHabitacion;
 
  @Column(name = "nombreHabitacion", nullable = false, unique = false)
  private String nombreHabitacion;
 
 
  @ManyToOne
  @JoinColumn(name = "nroPiso")
  private Piso unPiso;
 
  @OneToMany(mappedBy = "unaHabitacion")
  private List<Aparato> aparatos;
 
  @OneToMany(mappedBy = "unaHabitacion")
  private List<Ventilador> ventiladores;
 
  @OneToMany(mappedBy = "unaHabitacion")
  private List<Aire> aires;
 
 
  public Habitacion (String nombreHabitacion, Piso unPiso)
  {
      this.nombreHabitacion = nombreHabitacion;
      this.unPiso = unPiso;
 
      this.aparatos = new ArrayList<Aparato>();
      this.ventiladores = new ArrayList<Ventilador>();
      this.aires = new ArrayList<Aire>();
  }
 
  public Habitacion () { };
 
  public Integer getNroHabitacion()
  {
        return nroHabitacion;
  }
 
    public void setNroHabitacion(Integer nroHabitacion) {
        this.nroHabitacion = nroHabitacion;
    }
 
    public String getNombreHabitacion() {
        return nombreHabitacion;
    }
 
    public void setNombreHabitacion(String nombreHabitacion) {
        this.nombreHabitacion = nombreHabitacion;
    }
 
    public Piso getUnPiso() {
        return unPiso;
    }
 
    public void setUnPiso(Piso unPiso) {
        this.unPiso = unPiso;
    }
 
    @Override
    public String toString() {
        return nombreHabitacion;
    }
 
    public List<Aparato> getAparatos() {
        return aparatos;
    }
 
    public void setAparatos(List<Aparato> aparatos) {
        this.aparatos = aparatos;
    }
 
    public List<Ventilador> getVentiladores() {
        return ventiladores;
    }
 
    public void setVentiladores(List<Ventilador> ventiladores) {
        this.ventiladores = ventiladores;
    }
 
    public List<Aire> getAires() {
        return aires;
    }
 
    public void setAires(List<Aire> aires) {
        this.aires = aires;
    }
 
  public void agregarAparato()throws ErrorException
  {
        Aparato a = new Aparato(this);
        //sino tengo agrego una nueva         
        this.getAparatos().add(a);
        casa.getPersistencia().insertar(a);
  }
 
  public void agregarVentilador()throws ErrorException
  {
        Ventilador v = new Ventilador(this);
        this.getVentiladores().add(v);
        casa.getPersistencia().insertar(v);
 
  }
 
  public void agregarAire()throws ErrorException
  {
        Aire aa = new Aire(this);
        this.getAires().add(aa);
        casa.getPersistencia().insertar(aa);
  }
}
------------------------------------------------------------------------
 
--------------------------------BOTON GUARDAR
try{
                Habitacion unaHabitacion;
                if (ComboBoxHabitaciones.getItemCount() > 0) {
                    unaHabitacion = (Habitacion) ComboBoxHabitaciones.getSelectedItem();
 
                    if(RBLuz.isSelected() == true) {
 
                        unaHabitacion.agregarAparato();
                    }
                    if(RBVentilador.isSelected() == true) {
 
                        unaHabitacion.agregarVentilador();
                    }
                    if(RBAire.isSelected() == true) {
 
                        unaHabitacion.agregarAire();
                    }
                    JOptionPane.showMessageDialog(rootPane, "Se a guardado de manera exitosa.");
                    casa.getPersistencia().refrescar(casa);
                    mostrarAparatos((Habitacion)ComboBoxHabitaciones.getSelectedItem());
                }else{
                    JOptionPane.showMessageDialog(this, "Debe seleccionar una Habitación.");
                    this.ComboBoxHabitaciones.requestFocus();
                }
 
            } catch (Exception e) {
                JOptionPane.showMessageDialog(rootPane, "Se dectecto un problema.!!!!!!!!!!");
            }
--------------------------------------------------------
MOSTRAR APARATOS--------------------------------------------------
 
private void mostrarAparatos(Habitacion unaHabitacion){
        this.auxUnaHabitacion=unaHabitacion;
        try {
            MyTableModel tabla = new MyTableModel();
            tabla.isCellEditable(0, 0);
            tabla.setColumnCount(0);
            tabla.addColumn("ID Aparato");
            tabla.addColumn("Aparato");
 
        this.auxUnaHabitacion=unaHabitacion;
        Iterator <Aparato> listAparato = this.auxUnaHabitacion.getAparatos().iterator();
        Aparato inte;
 
        while(listAparato.hasNext()){
            String nombre="";
            inte = listAparato.next();
 
            if(inte instanceof Ventilador){
                Ventilador v =(Ventilador) inte;
                nombre= v.getDescripcion();
            }else if(inte instanceof Aire)
            {
                Aire aa =(Aire) inte;
                nombre=aa.getDescripcion();
            }
///CUANDO GURADO EL PRIMER APRATO LUZ ME DA ERROR EN ESTA LINEA
            if(inte.getDescripcion().equals("Luz")){
                nombre=inte.getDescripcion();
            }
            tabla.addRow(new Object[]{
               inte.getIdAparato(),nombre
            });
         }
 
         this.tableAparatos.setModel(tabla);
         tableAparatos.setLayout(null);
 
        } catch (SecurityException e) {
        } catch (HeadlessException e) {
        }
    }
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

Problema con mostrar datos en JTable con Iterator clase Padre y 2 clase hijos

Publicado por Billy Joel (875 intervenciones) el 08/03/2019 16:19:12
He podido rastrear el problema aunque no estoy completamente seguro que sea el problema
Como le haces para cargar el ComboBoxHabitaciones y si cast de habitación te funciona bien (ver línea 334).
1
unaHabitacion = (Habitacion) ComboBoxHabitaciones.getSelectedItem();

Otra cosa rara que veo es que estas repitiendo lo mismo aunque esto no afecta en nada, solo es estético en las líneas 363 y 371
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

Problema con mostrar datos en JTable con Iterator clase Padre y 2 clase hijos

Publicado por Maria (1 intervención) el 09/03/2019 01:50:12
Hola...
El comboBox de habitacion es casacada de combo pisos; lo cargo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void cargarComboPisos(JComboBox unCombo){
    unCombo.removeAllItems();
    List<Piso> lista = this.casa.getPiso();
    Iterator iter = lista.iterator();
    while (iter.hasNext()){
        unCombo.addItem(iter.next());
    }
    cargarComboHabitacion(ComboBoxHabitaciones,(Piso)ComboBoxPisos.getSelectedItem());
}
private void cargarComboHabitacion(JComboBox unCombo,Piso unPiso){
    unCombo.removeAllItems();
    if (ComboBoxPisos.getItemCount() > 0) {
        unPiso = (Piso) ComboBoxPisos.getSelectedItem();
        List<Habitacion> lista = unPiso.getHabitaciones();
        Iterator iter = lista.iterator();
        while (iter.hasNext()){
          unCombo.addItem(iter.next());
        }
    }
}


No me di cuenta que estoy repitiendo lo mismo en las líneas 363 y 371.
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