Bonjour à tous,
une petite question... est-il possible de mettre un listener, pou détecter un clic droit, uniquement sur les titres d'une JTable?
Manu.
Version imprimable
Bonjour à tous,
une petite question... est-il possible de mettre un listener, pou détecter un clic droit, uniquement sur les titres d'une JTable?
Manu.
oui
oui j'ai fait ^^ :
et pour recuperer quel colonne c'est dans le listener:Code:
1
2
3 _header = _table.getTableHeader(); _header.addMouseListener(new HeaderListener());
Code:
1
2 int c = _header.columnAtPoint(event.getPoint());
Merci pour vos réponses...surtout toi iohack ça m'a soulagé de savoir que c'était possible :lol:
En fin en tout cas je n'y arrive pas, j'ai voulu simplifier la chose dans un premier temps en faisant juste un JButton pour afficher le menu contextuel...mais rien n'apparaît!
j'ai bien mon JButton avec mon listener
et la fonction qui devrait faire apparaître mon menu :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 protected JButton affichageColonnes = null; ... affichageColonnes = new JButton("Affichage des colonnes..."); ... boutonsSousResultats.add(affichageColonnes); ... affichageColonnes.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { maybeShowPopup(); } });
Mais malheureusement rien ne s'affiche :-(Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private void maybeShowPopup( ) { System.out.println("insertion et suppression"); JMenu contextMenu = new JMenu() ; JMenuItem insert = new JMenuItem("Insert Phase") ; JMenuItem delete = new JMenuItem("Delete Phase") ; contextMenu.add(insert) ; contextMenu.add(delete) ; contextMenu.setMenuLocation(50,50); contextMenu.setEnabled(true) ; contextMenu.setVisible(true) ; contextMenu.setPopupMenuVisible(true) ; affichageColonnes.add(contextMenu); }
Le but étant bien évidemment que le menu apparaisse à coté du bouton.
Alors un JMenu c'est pour utiliser dans une JMenuBar (en fait c'est un bouton qui affiche un JPopupMenu), utilises plutot un JPopupMenu et ensuite utilises plutot contextMenu.show(parent, x, y) que juste contextMenu.setVisible(true).
En supposant que affichageColonnes soit l'entete de colonnes de la table.Code:
1
2
3
4
5
6
7
8
9
10 private void maybeShowPopup( ) { System.out.println("insertion et suppression"); JPopupMenu contextMenu = new JPopupMenu() ; JMenuItem insert = new JMenuItem("Insert Phase") ; JMenuItem delete = new JMenuItem("Delete Phase") ; contextMenu.add(insert) ; contextMenu.add(delete) ; contextMenu.show(affichageColonnes, 50, 50); }
Impeccable ça fonctionne :D , juste pour info affichageColonnes c'est le JButton sur lequel je déclenche l'apparition du JPopupMenu.
Merci.
Manu.
Ah ok. Pourquoi ne pas mettre egalement un listener sur le clic droit/isPopupTrigger() sur l'entete de la table pour faire de meme (note : c'est juste une suggestion, des fois avec JTable on arrive a devoir se casser la tete comme pas possible pour obtenir un resultat simple).
Maintenant que ça fonctionne sur le JButton je vais pouvoir tenter de m'attaquer au clic doit sur l'entete de la JTable, c'est clair!
en tout cas merci.