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 :

Ajouter JButton dans une JTable


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Par défaut Ajouter JButton dans une JTable
    Bonjour à tous !
    J'ai un problème, je souhaite ajouter un JButton dans une colonne d'une JXTable.
    Ce bouton j'arrive bien à l'ajouté, cependant quand je clique dessus aucune Action (ActionListener) n'est possible.
    Voici mon code lorsque je crée mon bouton :

    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
      private class TableEditor extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {
     
            private static final long serialVersionUID = 5598763435267075115L;
     
            @Override
            public Object getCellEditorValue() {
                // TODO Auto-generated method stub
                return null;
            }
     
            @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                    boolean hasFocus, int row, int column) {
                selectLineButton = new JButton("Send ID");
                selectLineButton.addActionListener(new ActionListener() {
     
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("Test button");
     
                    };
                });
     
                return selectLineButton;
            }
    Puis comment je l'ajoute dans la JTable :
    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
     private void initComponent() {
            setLayout(new BorderLayout());
            table = new JXTable(new TableModel());
            ((JXTable) table).setColumnControlVisible(true);
            ((JXTable) table).setSortable(false);
     
            table.getColumnModel().getColumn(3).setCellEditor(new TableEditor());
            table.getColumnModel().getColumn(3).setCellRenderer(new TableEditor());
     
            if (selectLineButton != null) {
                selectLineButton.addActionListener(new ActionListener() {
     
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("Send Id");
     
                    }
                });
            }
    J'espère avoir été claire !
    Merci d'avance

  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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu as implémenté un renderer qui affiche un bouton, mais pas d'éditeur de type JButton. Un renderer n'est pas interactif : il est juste affiché, même s'il est produit avec un composant interactif.
    Et ce que tu fais dans initComponent ne permet pas de gérer un bouton par ligne, mais un bouton externe à la JTable.

    Un exemple complet ici.
    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 confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Par défaut
    Effectivement grâce à ton code j'arrive bien à rajouter les boutons.
    J'ai fait plusieurs testes dessus. J'arrive à actionner les boutons lorsque je rentre des données comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Object[][] data = { { "XXX", new Integer(100), "truc" }, { "YYY", new Integer(42), "machin" },
                    { "ZZZ", new Integer(33), "bidule" } };
            String[] titles = { "col1", "col2", "col3" };
            JTable table = new JTable(data, titles);
    Mais des que j'utilise mon code qui permets de parcours une liste de données avec la classe TableModel ci-dessous impossible de faire une action.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      private class TableModel extends AbstractTableModel
    Faut-il que j'utilise une autre manière pour rentrée les données de ma table et parcours ma liste ?

  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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    C'est juste parce que la méthode isCellEditable(int rowIndex, int columnIndex) de AbstractTableModel retoune false par défaut.

    Implémente-là dans ton modèle pour que les colonnes où tu mets un bouton soient éditables.
    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 confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Par défaut
    Ouf ! Merci beaucoup pour tout ça fonctionne parfaitement !

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

Discussions similaires

  1. Bug affichage Jpanel (contenant JButton) dans une JTable
    Par Ayok13 dans le forum Composants
    Réponses: 3
    Dernier message: 20/11/2011, 04h46
  2. Listen un JButton dans une JTable
    Par Goupo dans le forum Composants
    Réponses: 1
    Dernier message: 14/03/2008, 03h21
  3. Utilsation des JButton dans une Jtable
    Par henpower dans le forum Composants
    Réponses: 4
    Dernier message: 18/09/2007, 16h58
  4. Comment mettre un JButton dans une JTable
    Par vinceLeBarbare dans le forum Composants
    Réponses: 6
    Dernier message: 05/06/2006, 11h43
  5. Icon pour pour JButton dans une Jtable + pb colonnes
    Par dim_italia dans le forum Composants
    Réponses: 3
    Dernier message: 22/02/2006, 18h05

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