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.
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 j'ai fait ^^ :
et pour recuperer quel colonne c'est dans le listener:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 _header = _table.getTableHeader(); _header.addMouseListener(new HeaderListener());
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Merci de penser au tagquand 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
Impeccable ça fonctionne, juste pour info affichageColonnes c'est le JButton sur lequel je déclenche l'apparition du JPopupMenu.
Merci.
Manu.
Partager