IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

tableau(grid) graphique de liste en java


Sujet :

Composants Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2006
    Messages : 279
    Points : 99
    Points
    99
    Par défaut tableau(grid) graphique de liste en java
    Bonsoir;
    Je veux savoir comment faire en java pour créer en mode graphique un tableau contenant une liste d'enregistrements provenants d'une base de donnée.
    Pour la récupération des données pas de souci j'ai une méthode pour ca en manipulant JDBC et qui retourne une Liste de String ; mon problème se pose au niveau de l'affichage sous forme de tableau(grid) .
    Merci

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Sur le web ? JSP et tout le reste.
    Sur le bureau ? Swing.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 99
    Points
    99
    Par défaut
    Ou alors je sais pas si c'est super efficace mais tu recupere les info de ta bdd dans un tableau d'objet, puis tu cree un tableModel qui va prendre en parametre ton table d'objet, et enfin tu lie ta jtable et ton tableModel.
    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //ici obj est ton tableau d'objet qui contient des données de la base
    //col est un tableau de String qui contient le nom des colonnes.
    DefaultTableModel mod = new DefaultTableModel(obj, col);
    //jtblClient (par exemple) serait la jtable que tu lie au tableModel
    jtblClient.setModel(mod);
    Bref je sais pas si j'ai été très clair !!!
    Bon courage

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2006
    Messages : 279
    Points : 99
    Points
    99
    Par défaut
    Merci pour la réponse mais pour tester ca je dois avoir les outils swwing intégrée dans eclipse : j'ai un cinq de dossiers rar nommés "EMF-sdo-runtime" que j'ai décompressés dans le dossier eclipse mais quand j'essaie de faire new+visual calss je la trouve pas dans la liste comment je pourrai alors ajouter ces swing à eclipse??
    Merciii

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 62
    Points
    62
    Par défaut petite exemple
    Voilà un client(applet) java qui affiche dans un tableau des infos d'une base de données. à la fin de cette classe il y a une classe MyTableModel qui permet d'intéragir avec ta JTable.

    pour initialiser ta table le principe est simple :
    - tu récupères ton resultset et tu mets ces infos dans un classe que tu auras crée.

    - tu boucles sur ton tableau data de ton modèle pour y ajouter les infos à intégrer dans ta JTable.

    - et tu init ta Jtable exemple JTable table = new JTable(model);

    Bon j'espère que celà t'aura apporté un peu d'aide.

    PS: Mon client ne marchera pas car il manque 2 classes et une interface de plus il est censé se connecter sur à Server en RMI
    Fichiers attachés Fichiers attachés

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2006
    Messages : 279
    Points : 99
    Points
    99
    Par défaut
    Merci pour toutes vos réponse qui m'ont vraiment aidées.
    Mais dites moi comment faire pour rafraichir la grid après une opération de suppression ou modification? j'ai pas trouvé une méthode pour ca.
    Merci

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 62
    Points
    62
    Par défaut
    Je t'avoue que je ne comprend pas pourquoi tu devrait intégrer les outils swing ??
    Je travaille sous netbeans et les librairies SWING sont intégrées en natif!

    A moins que tu cherches un plugin ou autre qui lors d'un clique sur une icone tableau, crée le code de du tableau automatiquement ?

    Sinon tu peux toujours utiliser la bonne vieille méthode qui consiste à taper le code toi même.

    Désolé je ne suis pas très utile là, mais j'aimerai comprendre mieux ce que tu cherches à faire, car dans la pièces jointes que je t'ai envoyé il y a l'initialisation du tableau, et dans la classe MyTableModel il y a des méthodes pour ajouter ou supprimer des lignes dans le tableau et qui le rafraichissent.

    bonne journée

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2006
    Messages : 279
    Points : 99
    Points
    99
    Par défaut
    Salut;
    je travaille avec les nets beens justement et je veux gérer les éléments de ma base de données (suppression;modification, ajout) .
    donc j'ai un frame où j'affiche la table avec en dessous des boutons : modifier , supprimer et ajouter.je sélectionne un élément de la table et je clique par exemple modifier tout ce passe bien au niveau de la base de donnée le seul souci c'est que je veux rafraichir la JTable pour afficher les nouvelles modifications .
    J'espère que c'est bien clair cette fois
    Merci

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 62
    Points
    62
    Par défaut
    Ok j'ai mieux compris là, le début de semaine est toujours difficile .

    Je ne sais pas si tu as regardé le fichier Client.java que j'avais mis en pièce jointes la méthode pour faire ce que tu cherches est à l'intérieur, sinon je te ré explique plus clairement :
    tout d'abord voilà le listener associé à mon bouton d'ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    this.bouton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    try {
                        ZDialogBox box     = new ZDialogBox(null, "Essai", true);
                        Monnaie    monnaie = box.showDialog();
     
                        inter.add(monnaie);
                        model.addRow(monnaie);
                    } catch (RemoteException ex) {
                        Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            });
    l
    appel de la méthode inter.add(monnaie); actualise ma BDD --> ok ça tu sais faire
    l'appel de la méthode imodel.addRow(monnaie); de mon model MytableModel toujours dans mon fichier Client.java(si tu veux y jeter un coup d'oeil) rafraichi mon model et ma JTable, voilà le détail de la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public boolean addRow(Monnaie tmp) {
                Object[][] dataTmp = new Object[this.getRowCount() + 1][this.getColumnCount()];
     
                for (int i = 0; i < this.getRowCount() + 1; i++) {
                    if (i == this.getRowCount()) {
                        dataTmp[i][0] = tmp.getNom();
                        dataTmp[i][1] = tmp.getTaux();
                    } else {
                        dataTmp[i][0] = this.data[i][0];
                        dataTmp[i][1] = this.data[i][1];
                    }
                }
     
                this.data = dataTmp;
                this.fireTableRowsInserted(this.getRowCount() + 1, this.getRowCount() + 1); //voilà la méthode qui permet de rafraichir ta Jtable
     
                return true;
            }
    En ce qui concerne le delete c'est un peu le même principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    public void deleteRow(int row) {
                System.out.println("la row est :" + row + " Et le nombre de ligne" + this.getRowCount());
     
                Object[][] dataTmp = new Object[this.getRowCount() - 1][this.getColumnCount()];
     
                if (row == this.getRowCount() - 1) {
                    for (int i = 0; i < this.getRowCount() - 1; i++) {
                        dataTmp[i][0] = this.data[i][0];
                        dataTmp[i][1] = this.data[i][1];
                    }
                } else {
                    for (int i = 0; i < this.getRowCount(); i++) {
                        if (i > row) {
                            dataTmp[i - 1][0] = this.data[i][0];
                            dataTmp[i - 1][1] = this.data[i][1];
                        } else if (i == row) {
                            i++;
                            dataTmp[i - 1][0] = this.data[i][0];
                            dataTmp[i - 1][1] = this.data[i][1];
                        } else {
                            dataTmp[i][0] = this.data[i][0];
                            dataTmp[i][1] = this.data[i][1];
                        }
                    }
                }
     
                this.data = dataTmp;
                this.fireTableRowsDeleted(row, row); //méthode qui rafraichi la JTable
            }
    voilà j'espère que mes exemples et explications sont clairs et que tu va réussir sinon post ton code.

    Bonne journée

  10. #10
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 99
    Points
    99
    Par défaut
    euh je sais pas du tout comment tu gère tes insertions et supression de tes données de la bdd, mais je vais te dire comment moi j'avais fais au cas où cela pourrait t'aider.
    premierement j'avais crée une methode loadTableClient() qui charge ta JTable avec les client de ta base de données (par exemple).
    Ensuite j'ai crée des bouttons classiques : ajouter, modifier et supprimer.
    Dans le code du bouton supprimer je fais la suppression directement dans ma base de donnée (en passant par une procedure stocké, je suis pas completement fou) en recupérant la ligne en cours, et je rappel la methode loadTableClient() qui remet à jour ta JTable.

    Voilà je sais pas vraiment si ça va t'aider mais bon courage

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2006
    Messages : 279
    Points : 99
    Points
    99
    Par défaut
    Salut;
    Merci pour ta réponse Peter p@n ! c'est très utile comme idée. c'est presque la même démarche que moi sauf que je cherchais s'il y a une méthode prédéfinie en java pour rechargement de JTable donc je vais suivre ton principe et définir ma propre méthode Load
    Merci encore une fois

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2006
    Messages : 279
    Points : 99
    Points
    99
    Par défaut
    bonjour;
    ton fichier Client.java est bien clair merci pour tes explications jakcam
    Bonne journée

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 62
    Points
    62
    Par défaut
    Si ton problème est résolu, n'oublie pas de cliquer sur le bouton de résolution, tes questions pourraient servir à un autre.

    Bonne journée et surtout bon codage

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2006
    Messages : 279
    Points : 99
    Points
    99
    Par défaut
    C'est déjà fait hier j'oublie jamais ce magique bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/12/2012, 14h15
  2. Réponses: 4
    Dernier message: 03/05/2006, 14h30
  3. [SQL] Obtenir un tableau à partir d'une liste
    Par JMO91 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/01/2006, 00h07
  4. "Tableau" à 2 dimensions (tuples, listes, dictionn
    Par Olivier_ dans le forum Général Python
    Réponses: 4
    Dernier message: 27/09/2005, 22h32
  5. [Debutant(e)] Possibilités graphiques et ludiques de JAVA
    Par Shadowritter dans le forum Interfaces Graphiques en Java
    Réponses: 17
    Dernier message: 17/01/2005, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo