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

 Java Discussion :

Composant dans un Table


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut Composant dans un Table
    Bonjour,

    Je cherche s'il est possible de rentrer un composant (checkbox dans mon cas) dans une case d'un tableau ?

    A l'heure actuelle je ne sais mettre que du texte lorsque j'insère des lignes. Donc en fait, j'aurais une ligne avec par exemple : première colonne texte, seconde checkbox, troisième bouton.

    Est ce possible ?

    Avec l'interface de NetBeans je n'arrive pas à trouver de solution.

    Merci à vous.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Si tu parles d'une interface Swing, il y a 2 aspects :

    • l'affichage : tu peux modifier l'affichage d'une cellule d'un JTable avec un TableCellRenderer, pour afficher un JCheckBox (ou le simuler par images) ;
    • la saisie : pour pouvoir cocher/décocher la JCheckBox, il faut installer un éditeur qui est géré par un TableCellEditor.


    Voir tutoriel.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Effectivement il s'agit bien d'une interface Swing.

    Merci pour votre réponse; je m'en vais tout de suite voir le tutoriel.

    A priori dans mon cas il s'agira surtout d'un affichage; d'ailleurs si l’utilisateur n'a pas la possibilité de changer l'état de la checkbox ça sera encore mieux.

    Bref je m'en vais donc voir du coté de renderer.

    Merci.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Dans ce cas, le plus simple est encore d'utiliser des images, un pour l'état coché, une pour l'état décoché, à moins que tu ne tiennes absolument à avoir le rendu identique à celui d'un JCheckBox (quel que soit le LaF).

    • Sur ce post, j'ai mis trois exemples de TableCellRenderer, utilisant trois manières différentes d'afficher des images dans une cellule de JTable.
    • Sur ce post, j'ai mis un exemple de JTree, utilisant un TreeCellRenderer avec JCheckBox : le principe est identique au TableCellRenderer. Tu peux donc t'en inspirer.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    En réalité il s'avère que je n'en ai pas eu besoin.

    En effet en changeant le type de mes colonnes de object à boolean; il semblerait que le defaultrenderer implémente alors automatiquement des checkBox.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui, c'est vrai, mais faut un modèle qui indique la classe de la colonne soit un Boolean et en plus ça n'affiche qu'une checkbox et je pensais que tu avais besoin d'afficher une donnée accompagnée d'une checkbox. Attention, par défaut, elle est éditable.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Tant pis si c'est éditable pour le moment, j'essaierais de corriger cela plus tard en faisant mon propre modèle si possible.

    En attendant, je me heurte à un nouveau problème..

    Le but de l'application est de parcourir un JTree et d'afficher dans le tableau, les dossiers du répertoire courant sélectionné dans le JTree.

    J'ai donc réalisé mon JTree pour commencer qui fonctionne correctement. Le problème vient au moment d'afficher les dossiers dans le tableau... En fait, je l'ai fais, mais comme je le fais au moment de la constructions du jTree; le résultat est tel que je n'ai dans mon tableau que les fichiers du derniers dossiers.

    La solution qui m'est donc tout de suite venue à l'esprit c'est de faire un actionListener sur mon JTree afin de savoir si un TreeNode est sélectionné par la souris ou non. Sauf que à ma grande surprise NetBeans ne veut pas entendre parler d'ActionListener et d'actionPerformed sur mon JTree...

    Et là, comment je peux faire pour savoir à n'importe quel moment si on a cliqué sur un noeud de mon jTree ?

    Voici ce que j'ai réalisé
    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
         private void testArborescense(String path,javax.swing.tree.DefaultMutableTreeNode treeNode1)
         {
            //javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("21201283");
            jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
            jScrollPane4.setViewportView(jTree1);
             File repertoire = new File(path);
             updateTab(loadTabData(repertoire,path));
             String init=path;
             String[] files;
             files=repertoire.list();
             int i;
              for(i=0;i<files.length;i++){ 
                  String newPath=init+"\\"+files[i];
                  File f2=new File(newPath);
                  javax.swing.tree.DefaultMutableTreeNode treeNode2 = new javax.swing.tree.DefaultMutableTreeNode(f2.getName());
                  if(f2.isDirectory())
                  {
                      treeNode1.add(treeNode2);
     
                      testArborescense(newPath,treeNode2);
                      jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
                      updateTab(loadTabData(f2,newPath));
                  }
     
                  jScrollPane4.setViewportView(jTree1);
              }
         }
    Comme vous vous en rendrez compte, seul le dernier updateTab sera pris en compte pour l'affichage du tableau; à la limite ce n'est pas gênant ça fait une initialisation par défaut si je garde seulement le premier et que je vire celui dans le for.

    Mais ça n'empêche pas que je dois toujours trouver un moyen pour réagir à chaque clic sur mes Node du JTree.

    Merci encore, en espérant ne pas être trop brouillon dans mes explications.

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Utilise un TreeSelectionListener.

    Pour que ne pas pouvoir sélectionner plusieurs élements à la fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    jTree1.addTreeSelectionListener(e-> {
         DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.getNewLeadSelectionPath().getLastPathComponent();
         ... 
    });

    ou avant Java8 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    jTree1.addTreeSelectionListener(new TreeSelectionListener() {
     
       public void valueChanged(TreeSelectionEvent e) {
           DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.getNewLeadSelectionPath().getLastPathComponent();
            ...
       }
     
    });
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Merci pour ton aide précieuse, j'ai réussi à réaliser cette partie là

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Bravo, parce qu'en me relisant, je vois que j'avais oublié quelque chose (.getLastPathComponent()).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [WD17] ajout d'enregistrement dans une table avec clé composée
    Par angemarie dans le forum WinDev
    Réponses: 11
    Dernier message: 24/02/2015, 18h42
  2. Déterminer la Valeur la plus grande dans une table
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/08/2014, 23h35
  3. Ajout dans une table d'association à clé composée
    Par Knarf64 dans le forum Zend_Db
    Réponses: 1
    Dernier message: 20/06/2011, 17h55
  4. [Visual Web] Composant Calendar dans une table
    Par eponette dans le forum NetBeans
    Réponses: 4
    Dernier message: 20/02/2009, 21h16
  5. exploiter un évènement d'un sous composant dans un
    Par bjl dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/12/2002, 16h44

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