Menu

Arraylist dans JTbable [Résolu]

Messages postés
71
Date d'inscription
lundi 24 septembre 2018
Dernière intervention
8 février 2019
-
@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...
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
755
Date d'inscription
mercredi 20 juin 2018
Dernière intervention
15 février 2019
52
1
Merci
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)

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 58158 internautes nous ont dit merci ce mois-ci

Kilkenny95
Messages postés
71
Date d'inscription
lundi 24 septembre 2018
Dernière intervention
8 février 2019
-
Oui, je viens de l'ajouter
Commenter la réponse de Jithel
Messages postés
755
Date d'inscription
mercredi 20 juin 2018
Dernière intervention
15 février 2019
52
1
Merci
En m'inspirant de cet exemple :
https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java/25335-les-interfaces-de-tableaux

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);

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 58158 internautes nous ont dit merci ce mois-ci

Kilkenny95
Messages postés
71
Date d'inscription
lundi 24 septembre 2018
Dernière intervention
8 février 2019
-
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
Jithel
Messages postés
755
Date d'inscription
mercredi 20 juin 2018
Dernière intervention
15 février 2019
52 > Kilkenny95
Messages postés
71
Date d'inscription
lundi 24 septembre 2018
Dernière intervention
8 février 2019
-
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);
  }
}
Kilkenny95
Messages postés
71
Date d'inscription
lundi 24 septembre 2018
Dernière intervention
8 février 2019
-
Merci 10000000 fois ça marche !!
Commenter la réponse de Jithel