[Java] Interaction JTable et JDialog

Interaction JTable et JDialog [Java] - Java - Programmation

Marsh Posté le 08-10-2008 à 16:39:16    

Bonjour à tous.
Je cherche à créer le truc suivant dans ma GUI :
J'ai une JTable.
Je veux qu'un menu pop up s'ouvre quand on clique au bouton droit sur le header d'une colonne. Ça s'est bon, ça marche.
Puis quand on clique sur un des menuItem du popUpMenu, je veux que ça crée une sorte de fenêtre PopUp, qui demande à l'utilisateur plusieurs infos, que je récupérerai par la suite => ça marche aussi, par l'intermédiaire d'un composant JDialog personnalisé (les composants dispos via JOptionPane ne me vont pas)
 
Par contre je sais pas comment structurer mon truc pour pouvoir interagir facilement avec ma JTable.
Pour le moment j'ai fait comme ça :
 

Code :
  1. {...
  2. jTable = new JTable(data,columnNames);
  3. popupMenu=new JPopupMenu();
  4. JMenuItem menuItem=new JMenuItem("item popup liste" );
  5. menuItem.addActionListener(new ActionListener(){
  6. @Override
  7. public void actionPerformed(ActionEvent arg0) {
  8.  JDialog dialog=new JDialog();
  9.  JPanel panel=new JPanel();
  10.  panel.add(new JLabel("blabla" ));
  11.  panel.add(new JButton("ok" ));
  12.  dialog.setContentPane(panel);
  13.  dialog.pack();
  14.  dialog.setVisible(true);
  15. }
  16. });
  17. popupMenu.add(menuItem);
  18. PopupListener popupListener=new PopupListener();
  19. jTable.getTableHeader().addMouseListener(popupListener);
  20. ...
  21. }
  22. class PopupListener extends MouseAdapter {
  23.   public void mousePressed(MouseEvent e) {
  24.     showPopup(e);
  25.   }
  26.    public void mouseReleased(MouseEvent e) {
  27.     showPopup(e);
  28.   }
  29.    private void showPopup(MouseEvent e) {
  30.     if (e.isPopupTrigger()) {
  31.       popupMenu.show(e.getComponent(), e.getX(), e.getY());
  32.     }
  33.   }
  34. }


 
J'aimerais en particulier pouvoir connaître la colonne sur laquelle l'utilisateur a cliqué au moment de l'ouverture du JDialog.
merci beaucoup de m'éclairer sur ce point !

Reply

Marsh Posté le 08-10-2008 à 16:39:16   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed