Arraylist dans JTbable
Résolu
Kilkenny95
Messages postés
151
Date d'inscription
Statut
Membre
Dernière intervention
-
Kilkenny95 Messages postés 151 Date d'inscription Statut Membre Dernière intervention -
Kilkenny95 Messages postés 151 Date d'inscription Statut Membre Dernière intervention -
@Override public List<Product> selectAll() { List<Product> products = new ArrayList<Product>(); Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { connection = getConnection(); statement = connection.createStatement(); resultSet = statement.executeQuery("SELECT * FROM product"); while (resultSet.next()){ Product product = new Product(); product.setId(resultSet.getInt("id")); product.setNameProduct(resultSet.getString("nameProduct")); product.setHistorique(resultSet.getString("historique")); product.setLocalisation(resultSet.getString("localisation")); product.setEtat(resultSet.getString("etat")); products.add(product); } } catch (Exception e){ e.printStackTrace(); } finally { if(statement != null){ try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if(connection != null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } return products; // Tableau // public class Tableau extends JFrame { public Tableau(){ this.setTitle("Tableau"); this.setSize(1000, 1000); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setVisible(true); ProductDaoImpl pdi = new ProductDaoImpl(); JTable table = new JTable(); DefaultTableModel model = new DefaultTableModel(); Object[] columnsName = new Object[5]; columnsName[0] = "id"; columnsName[1] = "Nom"; columnsName[2] = "Localisation"; columnsName[3] = "Historique"; columnsName[4] = "Etat"; model.setColumnIdentifiers(columnsName); Object[] rowData = new Object[5]; for (int i = 0; i < pdi.selectAll().size(); i++) { rowData[0] = pdi.selectAll().get(i).getId(); rowData[1] = pdi.selectAll().get(i).getNameProduct(); rowData[2] = pdi.selectAll().get(i).getLocalisation(); rowData[3] = pdi.selectAll().get(i).getHistorique(); rowData[4] = pdi.selectAll().get(i).getEtat(); model.addRow(rowData); } JTable jTable = new JTable((Object[][]) rowData, columnsName); table.setModel(model); System.out.println(pdi.selectAll().size()); JPanel panel = new JPanel(); JScrollPane pane = new JScrollPane(table); panel.add(pane, BorderLayout.CENTER); }
Bonjour,
J'aimerai remplir un tableau avec une arraylist composé de données mysql.
Mon arraylist marche bien, elle m'affiche bien sur ma console la liste de mes données.
J'ai essayé mainte et mainte fois mais sans succès...
2 réponses
Je ne vois que le code spécifique à la récupération des données SQL dans une arraylist qui fonctionne déjà bien de ce que je comprend de ton message. Merci de publier le code relatif à la fonctionnalité qui n'est pas correcte (arraylist dans tableau)
Kilkenny95
Messages postés
151
Date d'inscription
Statut
Membre
Dernière intervention
Oui, je viens de l'ajouter
En m'inspirant de cet exemple :
https://openclassrooms.com/fr/courses/6173501-debutez-la-programmation-avec-java?archived-source=26832
Je dirais que rowData ne doit pas être un tableau à une dimension qui contient la liste des données à la suite mais plutôt un tableau à deux dimensions où chaque élément est un tableau qui contient les données d'une ligne.
A priori, pas besoin de model dans cet exemple.
Tu ajoutes le JTable dans un JScrollBar qui est ajouté dans un JPanel mais le JPanel n'est ajouté dans aucun conteneur. Il faut ajouter la dernière ligne dans ton code :
https://openclassrooms.com/fr/courses/6173501-debutez-la-programmation-avec-java?archived-source=26832
Je dirais que rowData ne doit pas être un tableau à une dimension qui contient la liste des données à la suite mais plutôt un tableau à deux dimensions où chaque élément est un tableau qui contient les données d'une ligne.
A priori, pas besoin de model dans cet exemple.
Tu ajoutes le JTable dans un JScrollBar qui est ajouté dans un JPanel mais le JPanel n'est ajouté dans aucun conteneur. Il faut ajouter la dernière ligne dans ton code :
this.getContentPane().add(panel);
Comme ça ?
Ma fenêtre reste toujours vide
public class Tableau extends JFrame { public Tableau(){ this.setTitle("Tableau"); this.setSize(1000, 1000); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setVisible(true); ProductDaoImpl pdi = new ProductDaoImpl(); JTable table = new JTable(); DefaultTableModel model = new DefaultTableModel(); Object[] columnsName = new Object[5]; columnsName[0] = "id"; columnsName[1] = "Nom"; columnsName[2] = "Localisation"; columnsName[3] = "Historique"; columnsName[4] = "Etat"; model.setColumnIdentifiers(columnsName); Object[][] rowData = new Object[pdi.selectAll().size()][5]; for (int i = 0; i < pdi.selectAll().size(); i++) { rowData[i][0] = pdi.selectAll().get(i).getId(); rowData[i][1] = pdi.selectAll().get(i).getNameProduct(); rowData[i][2] = pdi.selectAll().get(i).getLocalisation(); rowData[i][3] = pdi.selectAll().get(i).getHistorique(); rowData[i][4] = pdi.selectAll().get(i).getEtat(); model.addRow(rowData); } JTable jTable = new JTable((Object[][]) rowData, columnsName); table.setModel(model); System.out.println(pdi.selectAll().size()); JPanel panel = new JPanel(); JScrollPane pane = new JScrollPane(table); panel.add(pane, BorderLayout.CENTER); this.getContentPane().add(panel);
Ma fenêtre reste toujours vide
Essaye avec ça :
public class Tableau extends JFrame { public Tableau(){ this.setTitle("Tableau"); this.setSize(1000, 1000); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); ProductDaoImpl pdi = new ProductDaoImpl(); JTable table = new JTable(); String[] columnsName = new String[5]; columnsName[0] = "id"; columnsName[1] = "Nom"; columnsName[2] = "Localisation"; columnsName[3] = "Historique"; columnsName[4] = "Etat"; Object[][] rowData = new Object[pdi.selectAll().size()][5]; for (int i = 0; i < pdi.selectAll().size(); i++) { rowData[i][0] = pdi.selectAll().get(i).getId(); rowData[i][1] = pdi.selectAll().get(i).getNameProduct(); rowData[i][2] = pdi.selectAll().get(i).getLocalisation(); rowData[i][3] = pdi.selectAll().get(i).getHistorique(); rowData[i][4] = pdi.selectAll().get(i).getEtat(); } JTable jTable = new JTable(rowData, columnsName); System.out.println(pdi.selectAll().size()); JScrollPane pane = new JScrollPane(jTable); this.getContentPane().add(pane); this.setVisible(true); } }