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 :

Listen un JButton dans une JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut Listen un JButton dans une JTable
    Salut,

    Je ne parviens pas à écouter mes boutons dans mon JTable.
    Je suis bien aucourant qu'il y a comme une sorte de vitre sur la JTable qui empêche de listener directement ces boutons (button.addActionListener(this)), alors j'ai essayé à taton plusieurs autres Listeners :
    TableModelListener, TableColumnModelListener et PropertyChangeListener
    Mais ceux-cis ne font pas mon bonheur...

    J'ai trouvé ce post qui dit que l'on peut utiliser MouseListener. J'arrive à récupérer le numéro de ligne et de colonne mais pas à récupérer la valeur de mon JButton.

    Quel Listener faut-il que j'utilise pour écouter mes JButtons?

    Voici ma classe Main et mon Renderer.

    Merci d'avance.
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    public class Main implements MouseListener, TableModelListener, TableColumnModelListener, PropertyChangeListener{
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            Main app = new Main();
            app.run();
        }
     
        public void run() {
    String[] champs = {"Matricule", "Nom", "Prénom", "Age"};
     
            Object[][] donnees = {
                    {"123", "***", "***", new Integer(20)},
                    {"265", "***", "***", new Integer(23)},
                    {"985", "***", "***", new Integer(21)},
                    {"125", "***", "***", new Integer(22)}
            };
     
            JTable table = new JTable(donnees, champs);
            table.addMouseListener(this);
            table.setSelectionMode(0);
     
            //Création du Model
            //MonTableModel modele = new MonTableModel(champs);
            //modele.addTableModelListener(this);
            //table.setModel(modele);
     
            table.getColumnModel().getColumn(2).setPreferredWidth(10);
            //table.setPreferredSize(new Dimension(50,100));
     
            //Création d'un Renderer
            table.getColumnModel().getColumn(0).setCellRenderer(new Renderer());
            //table.getColumnModel().getColumn(0).addPropertyChangeListener(this);
     
            JFrame frame = new JFrame();
            Container c = frame.getContentPane();
     
            JScrollPane scroll = new JScrollPane(table);
            //scroll.setFillsViewportHeight(true);
            c.add(scroll);
     
            c.add(BorderLayout.SOUTH, new JLabel("Hola"));
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack();
            frame.setVisible(true);
        }
     
     
        public void tableChanged(TableModelEvent arg0) {
            System.out.println("Aîe! Aîe! Aïe! Ca va Chauffer!!!");
        }
     
        public void columnAdded(TableColumnModelEvent arg0) {}
     
        public void columnMarginChanged(ChangeEvent arg0) {}
     
        public void columnMoved(TableColumnModelEvent arg0) {}
     
        public void columnRemoved(TableColumnModelEvent arg0) {}
     
        public void columnSelectionChanged(ListSelectionEvent arg0) {
            System.out.println("Column Selection Changed!");        
        }
     
        public void propertyChange(PropertyChangeEvent arg0) {
            System.out.println("Property Changed!");
        }
     
        public void mouseClicked(MouseEvent e) {
            System.out.println("Click!");
            JTable table = (JTable) e.getSource();
     
            System.out.println(table.getComponentAt(table.getSelectedColumn(), table.getSelectedRow()));
            //Affiche : javax.swing.JTable[,0,0,450x64,alignmentX=null,alignmentY=null,border=,flag..........
        }
     
        public void mouseEntered(MouseEvent arg0) {}
     
        public void mouseExited(MouseEvent arg0) {}
     
        public void mousePressed(MouseEvent arg0) {}
     
        public void mouseReleased(MouseEvent arg0) {}
    }
    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 class Renderer extends JButton implements TableCellRenderer {
     
        private static final long serialVersionUID = 3347263083921355292L;
     
        public Renderer() {}
     
        public Component getTableCellRendererComponent(
                JTable table, 
                Object columnText, 
                boolean isSelected, 
                boolean hasFocus, 
                int row, 
                int col) {
            this.setText((String) columnText);
     
                return this;
        }
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    bonsoir,
    Et si tu implement tableCellEditor à la place de tableCellRenderer, ça marche ?

Discussions similaires

  1. Modifier le texte d'un JButton dans une JTable
    Par isa911Bis dans le forum Composants
    Réponses: 3
    Dernier message: 28/02/2012, 09h04
  2. Bug affichage Jpanel (contenant JButton) dans une JTable
    Par Ayok13 dans le forum Composants
    Réponses: 3
    Dernier message: 20/11/2011, 04h46
  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