Bonjour,

J' ai une JTable avec un Editor qui permet de modifier certaines valeurs de l'objet qui s'affiche dans la cellule. L'editor étend JButton et la cellule est éditée avec le clic gauche; les modifications de valeurs se font dans un panel avec des JtextField etc.

Comment faire pour que l'editor fournisse un autre panel (panelDroit) lors d'un clic Droit?

Bien entendu,pour l'instant,le clic gauche marche, mais pas le clic droit.... Le clic droit n'est pas détecté.

Pour l'instant j'en suis là :

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
 
   class EditorHoraire extends AbstractCellEditor implements TableCellEditor, ActionListener {
 
//panelDroit (marche pas)
        PanelEditorConge panneauConge = null;
//panelGauche (marche)
        PanelEditorHoraire panneauHoraires = null;
        private ArrayList<Horaire> horaires = null;
        private JButton button = null;
        protected static final String EDIT = "edit";
        protected static final String EDIT2 = "edit2";
 
        public EditorHoraire() {
 
            button = new JButton();
            button.addMouseListener(new MouseAdapter() {
 
                public void mousePressed(MouseEvent e) {
                    int buttonDown = e.getButton();
 
                    if (buttonDown == MouseEvent.BUTTON1) {
                        button.setActionCommand(EDIT);
                        button.addActionListener(EditorHoraire.this);
                        button.setBorderPainted(false);
                        //renderer = new RendererColumnHoraireHaut();
                        panneauHoraires = new PanelEditorHoraire();
                        panneauHoraires.setModal(true);
                    } else if (buttonDown == MouseEvent.BUTTON2) {
                       //bouton du milieu : je n'utilise pas
                    } else if (buttonDown == MouseEvent.BUTTON3) {
                        button.setActionCommand(EDIT);
                        button.addActionListener(EditorHoraire.this);
                        button.setBorderPainted(false);
                        //renderer = new RendererColumnHoraireHaut();
                        panneauHoraires = new PanelEditorHoraire();
                        panneauHoraires.setModal(true);
                    }
 
                }
            });
 
        }
 
        @Override
        public Object getCellEditorValue() {
 
            //arrayhoraire 2 verifié
            return horaires;
        }
 
        @Override
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
            horaires = (ArrayList<Horaire>) value;
            return button;
        }
 
        @Override
        public boolean shouldSelectCell(EventObject ev) {
            return true;
        }
 
        @Override
        public void cancelCellEditing() {
            panneauHoraires.dispose();
            super.cancelCellEditing();
        }
 
        @Override
        public boolean stopCellEditing() {
            panneauHoraires.dispose();
            super.stopCellEditing();
            return true;
        }
 
        @Override
        public void actionPerformed(ActionEvent e) {
 
            if (EDIT.equals(e.getActionCommand())) {
               System.err.println(e.getActionCommand());
                panneauHoraires.setUtil(new Utilisateur());
                panneauHoraires.setDatestring("");
                DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, Locale.FRANCE);
                panneauHoraires.setArrayHoraire(horaires);
                Utilisateur util = horaires.get(0).getUtilId();
                String datestring = df.format(horaires.get(0).getDebut());
                panneauHoraires.setDatestring(datestring);
                panneauHoraires.setUtil(util);
                panneauHoraires.setVisible(true);
                //horaires 2 verifié
                this.fireEditingStopped(); //Make the renderer reappear.
            }
 
             else if (EDIT2.equals(e.getActionCommand())){
                  System.err.println(e.getActionCommand());
             }
 
            else { //User pressed dialog's "OK" buttonRetour.
                horaires = panneauHoraires.getArrayHoraire();
            }
 
    };
}

Merci d'avance pour toutes les réponses.