Arraylist dans JTbable

Résolu/Fermé
Kilkenny95 Messages postés 157 Date d'inscription lundi 24 septembre 2018 Statut Membre Dernière intervention 31 août 2020 - Modifié le 8 févr. 2019 à 10:29
Kilkenny95 Messages postés 157 Date d'inscription lundi 24 septembre 2018 Statut Membre Dernière intervention 31 août 2020 - 8 févr. 2019 à 12:34
@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...
A voir également:

2 réponses

Jithel Messages postés 843 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 171
8 févr. 2019 à 10:13
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)
1
Kilkenny95 Messages postés 157 Date d'inscription lundi 24 septembre 2018 Statut Membre Dernière intervention 31 août 2020
8 févr. 2019 à 10:14
Oui, je viens de l'ajouter
0
Jithel Messages postés 843 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 171
8 févr. 2019 à 11:01
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 :

this.getContentPane().add(panel);
1
Kilkenny95 Messages postés 157 Date d'inscription lundi 24 septembre 2018 Statut Membre Dernière intervention 31 août 2020
8 févr. 2019 à 11:26
Comme ça ?

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
0
Jithel Messages postés 843 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 171 > Kilkenny95 Messages postés 157 Date d'inscription lundi 24 septembre 2018 Statut Membre Dernière intervention 31 août 2020
8 févr. 2019 à 11:34
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);
  }
}
0
Kilkenny95 Messages postés 157 Date d'inscription lundi 24 septembre 2018 Statut Membre Dernière intervention 31 août 2020
8 févr. 2019 à 12:34
Merci 10000000 fois ça marche !!
0