JTable avec 2 Editors : pour clic Droit et clic Gauche
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:
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.
Table avec 2 Editors : pour clic Droit et clic Gauche
Bonjour,
Merci pour cette réponse mais j'ai déjà essayé.
Je pense que le premier problème est que le bouton de réagit pas graphiquement au clic droit.
Existe-t-il un moyen?
Merci