Java - JTable con lista enlazada

 
Vista:

JTable con lista enlazada

Publicado por RBustillos (1 intervención) el 24/11/2016 09:25:53
Hola a todos, estoy intentando mostrar en un jTable los datos guardados en una lista enlazada, pero al momento de crear el for para agregar las filas con los datos a la tabla me marca el error "for-each not applicable to expression type", quisiera su ayuda para poder mostrar los datos de la lista en la tabla, las clases que tengo son las siguientes:

1
2
3
4
5
6
public class Main {
 
    public static void main(String[] args) {
        new CrearSolicitud().setVisible(true);
    }
}


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
public class Materiales {
    private int idSolicitud;
    private String solicitante;
    private String pieza;
    private double cantidad;
    private String descripcion;
 
    public Materiales(int idSolicitud, String solicitante, String pieza, double cantidad, String descripcion) {
        this.idSolicitud = idSolicitud;
        this.solicitante = solicitante;
        this.pieza = pieza;
        this.cantidad = cantidad;
        this.descripcion = descripcion;
    }
 
    public String getDescripcion() {
        return descripcion;
    }
 
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
 
    public int getIdSolicitud() {
        return idSolicitud;
    }
 
    public void setIdSolicitud(int idSolicitud) {
        this.idSolicitud = idSolicitud;
    }
 
    public String getSolicitante() {
        return solicitante;
    }
 
    public void setSolicitante(String solicitante) {
        this.solicitante = solicitante;
    }
 
    public String getPieza() {
        return pieza;
    }
 
    public void setPieza(String pieza) {
        this.pieza = pieza;
    }
 
    public double getCantidad() {
        return cantidad;
    }
 
    public void setCantidad(double cantidad) {
        this.cantidad = cantidad;
    }
}


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
import javax.swing.JOptionPane;
 
public class Lista {
    private Nodo inicio;
    private Nodo fin;
 
    public Lista() {
        inicio = null;
        fin = null;
    }
 
    public boolean estaVacia() {
        if (inicio == null) {
            return true;
        } else {
            return false;
        }
    }
 
    void agregarInicio(Materiales ma) {
        Nodo actual;
 
        if (this.estaVacia()) {
 
            actual = new Nodo(ma, null);
            inicio= actual;
            fin= actual;
 
        } else {
            actual= new Nodo(ma, null);
            fin.setNext(actual);
            fin = actual;
        }
    }
 
    void mostrar(){
        Solicitudes s = new Solicitudes();
        if(this.estaVacia()){
           JOptionPane.showMessageDialog(null, "¡Esta vacia!");
        }
        else{
            Nodo temporal;
            temporal = inicio;
            while(temporal!= null){
                JOptionPane.showMessageDialog(null,temporal.getDato().toString());
                temporal= temporal.getNext();
            }
        }
    }
 
    public int tamaño() {
        int contador = 0;
        Nodo c = this.inicio;
        while (c != null) {
            contador++;
            c = c.getNext();
        }
        System.out.println(""+ contador);
        return contador;
    }
}


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
public class Nodo {
    private Materiales dato;
    private Nodo next;
 
    public Nodo(Materiales dato, Nodo next) {
        this.dato = dato;
        this.next = next;
    }
 
    public Materiales getDato() {
        return dato;
    }
 
    public void setDato(Materiales dato) {
        this.dato = dato;
    }
 
    public Nodo getNext() {
        return next;
    }
 
    public void setNext(Nodo next) {
        this.next = next;
    }
}


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
import javax.swing.JOptionPane;
 
public class CrearSolicitud extends javax.swing.JFrame {
    public static Lista lista = new Lista();
    int id = 10000;
 
    public CrearSolicitud() {
        initComponents();
    }
 
    public void Limpiar(){
        txtCanPie.setText("");
        txtDesPie.setText("");
        txtNomPie.setText("");
        txtNomSol.setText("");
    }
 
    @SuppressWarnings("unchecked")
 
    private void txtNomSolActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }
 
    private void txtNomPieActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }
 
    private void txtCanPieActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }
 
    private void txtDesPieActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }
 
    private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) {
        if(txtNomSol.getText().isEmpty() || txtNomPie.getText().isEmpty() || txtCanPie.getText().isEmpty() || txtDesPie.getText().isEmpty()){
            JOptionPane.showMessageDialog(this, "Llene los campos faltantes");
        } else {
            String solicitante = txtNomSol.getText();
            String pieza = txtNomPie.getText();
            int cantidad = Integer.parseInt(txtCanPie.getText());
            String descripcion = txtDesPie.getText();
            id++;
 
            Materiales m = new Materiales(id, solicitante, pieza, cantidad, descripcion);
            lista.agregarInicio(m);
 
            JOptionPane.showMessageDialog(rootPane, "La solicitud se ha creado");
            Limpiar();
        }
    }
 
    private void btnVerSolActionPerformed(java.awt.event.ActionEvent evt) {
        new Solicitudes().setVisible(true);
        this.dispose();
    }
 
    // Variables declaration - do not modify                     
    private javax.swing.JButton btnAceptar;
    private javax.swing.JButton btnVerSol;
    private javax.swing.JLabel lblCanPie;
    private javax.swing.JLabel lblDesPie;
    private javax.swing.JLabel lblNomPie;
    private javax.swing.JLabel lblNomSol;
    private javax.swing.JLabel lblSolMat;
    private javax.swing.JPanel panelCrearSolicitud;
    private javax.swing.JTextField txtCanPie;
    private javax.swing.JTextField txtDesPie;
    private javax.swing.JTextField txtNomPie;
    private javax.swing.JTextField txtNomSol;
    // End of variables declaration
}


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
import javax.swing.table.DefaultTableModel;
 
public class Solicitudes extends javax.swing.JFrame {
    public static DefaultTableModel modelo;
 
    public Solicitudes() {
        initComponents();
        modelo = (DefaultTableModel)tblSolicitudes.getModel();
    }
 
    @SuppressWarnings("unchecked")
 
    private void btnVolverActionPerformed(java.awt.event.ActionEvent evt) {
        new CrearSolicitud().setVisible(true);
    }
 
    private void btnMostarActionPerformed(java.awt.event.ActionEvent evt) {
        modelo.getDataVector().clear();
        for(Materiales mat: CrearSolicitud.lista)              Aquí marca el error
          {
              modelo.addRow(new Object[]{mat.getIdSolicitud(), mat.getSolicitante(), mat.getPieza(), mat.getCantidad(), mat.getDescripcion()});
          }
    }
 
    // Variables declaration - do not modify
    private javax.swing.JButton btnMostar;
    private javax.swing.JButton btnVolver;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblSolicitudes;
    private javax.swing.JPanel panelSolicitud;
    private javax.swing.JTable tblSolicitudes;
    // End of variables declaration
}


Ya no se que hacer y el problema es que tengo que hacer uso de lista enlazada tal como la muestro en mi clase.

Gracias de antemano, saludos.
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

JTable con lista enlazada

Publicado por Tom (1831 intervenciones) el 24/11/2016 09:45:51
Tu clase Lista debe implementar el interfaz Iterable (el "enhanced for" usa un Iterator).
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