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 :

[JTable] [TableCellEditor] Action d'un JButton


Sujet :

Composants Java

  1. #1
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Points : 128
    Points
    128
    Par défaut [JTable] [TableCellEditor] Action d'un JButton
    Bonjour,
    Voila j'ai un petit problème avec une Action d'un JButton dans une JTable. J'arrive bien a inserer le JButton et a declencher une action, mais en fait je voudrais supprimer la ligne correspondant lorsqu on clique sur le boutton. Voila mon code :
    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
    31
    32
    33
    34
     
    public class JButtonEditor extends AbstractCellEditor
                             implements TableCellEditor,
    			            ActionListener {
        private JButton button;
     
        public JButtonEditor() {
     
            button = new JButton();
            button.addActionListener(this);
            button.setBorderPainted(false);
     
        }
     
        /**
         * Handles events from the editor button and from
         * the dialog's OK button.
         */
        public void actionPerformed(ActionEvent e) {
            System.out.println("Mon action");
            // ------------------------------------------------
            //| Probleme d'acces a tout les element de la JTable  |
            // ------------------------------------------------
        }
     
        //Implement the one method defined by TableCellEditor.
        public Component getTableCellEditorComponent(JTable table,
                                                     Object value,
                                                     boolean isSelected,
                                                     int row,
                                                     int column) {
            return button;
        }
    }
    J'aimerais savoir comment faire pour récuperer simplement tous les element de ma JTable afin de pouvoir supprimer la ligne sélectionné ou bien est ce impossible et faut-il tout passer au constructeur et avoir le model la jtable etc... en attributs de cette classe afin de pouvoir les modifier ?

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    Tout dépend de ton TableModel. Si tu n'en as spécifié aucun en particulier, tu utilises un DefaultTableModel, et il est éditable (tu peux ajouter ou enlever des lignes, colonnes, etc). Ca marche comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DefaultTableModel model = (DefaultTableModel) maJTable.getModel();
    model.removeRow(maJTable.getSelectedRow());
    [EDIT] J'avais pas bien compris ta question !!

    A ta place, je mettrais un autre actionListener que le bouton. Il y a des classes mieux placées pour accéder à la JTable et son TableModel. Je ferais quelque chose comme ça :
    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
    public class ButtonCellEditor extends JButton implements TableCellEditor {
      public ButtonCellEditor(ActionListener tableManager) {
        ...
        addActionListener(tableManager);
      }
      ...
    }
    
    
    
    public class ClasseGérantlaJTable implements ActionListener {
    ...
    TableModel monModel = new ...;
    monModel.add(...);
    JTable maJTable = new JTable(...);
    maJTable.setEditor(new ButtonCellEditor(this));
    ...
    
      public void actionPerformed(ActionEvent e) {
        maJTable.blabla
      }
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Points : 128
    Points
    128
    Par défaut
    Merci Beaucoup !!
    Je savais que je prenais les choses dans un mauvais sens. Le seul problème que je vois à cette methode c'est qu'on ne peut pas définir 2 types de bouttons différents pour une classe donné gérant la JTable
    Je sais j'en demande beaucoup là

  4. #4
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Alors là tu touches au point ou je vais te renvoyer vers les tutoriels des JTable, parce que j'ai toujours galéré avec ces aspects. Tu as 2 possibilités :
    - définir un seul CellEditor, et faire un test dans la méthode getTableCellEditorComponent sur l'objet contenu pour svoir ce que tu fais de ton bouton (ça c'est bon je gère).
    - définir 2 CellEditors, et les associer à des classes (voir JTable.setDefaultEditor et TableModel.getColumnClass), mais je suis pas pro la dedans.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 859
    Points
    22 859
    Billets dans le blog
    51
    Par défaut
    Tu peux aussi associer un editor a une colonne. Habituellement j'utilisais l'association par classe mais pour ce que je fais actuellement j'ai trouve plus simple de definir par colonne car chaque ligne est en effet composee du meme objet qui est repete dans les trois colonnes de ma table avec un renderer/editor different pour chaque colonne, histoire de modifier des donnes differentes dans cet objet.

    Citation Envoyé par xavlours
    -définir un seul CellEditor, et faire un test dans la méthode getTableCellEditorComponent sur l'objet contenu pour svoir ce que tu fais de ton bouton (ça c'est bon je gère).
    Ca marche bien en effet, je viens de faire un editor (et un renderer) qui n'etend pas DefaultCellEditor et qui retourne au choix une JComboBox ou un JSpinner suivant le type de valeur a modifier dans l'objet. C'est celui actuellement utilise dans la troisieme colonne de ma table.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Points : 128
    Points
    128
    Par défaut
    Merci beaucoup pour vos précisions qui m'ont été très utile. Ca répond parfaitement à mon problème !!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/06/2012, 11h52
  2. Pb Action sur un jbutton dans un jtable
    Par snay13 dans le forum Composants
    Réponses: 6
    Dernier message: 20/07/2010, 00h32
  3. lancer l'action d'un JButton depuis le code.
    Par beny1700 dans le forum Composants
    Réponses: 9
    Dernier message: 18/06/2008, 22h33
  4. enlever une Action associée à un JButton
    Par tanguy.L dans le forum Composants
    Réponses: 3
    Dernier message: 05/05/2008, 10h41
  5. [JTable] Action sur JButton après mise en attente
    Par 6ix dans le forum Composants
    Réponses: 2
    Dernier message: 28/02/2008, 07h27

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