Bonjour,
Voici mon problème, j'ai créé une JTable avec un modèle, un renderer, et un éditeur personnalisé. Dans une JTable classique, pour éditer un champs String, il faut double cliquer sur celui-ci. Un simple clic aura pour effet de désélectionner les autres champs en cours d'édition, et de mettre la ligne en surbrillance (la sélectionner).
Mon code fonctionne bien, sauf que lorsque je clique sur un champs String, je passe directement en mode édition, sans passer par la sélection. C'est très problématique dans mon cas. Auriez-vous une idée de la cause du problème? Le code est-il nécessaire à la bonne compréhension de la situation? J'ai quand même un doute, je pense pas que l'éditeur soit vraiment en cause vu que le code reste très simple...
Voici mon Editeur :
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 public class PduCellEditor extends AbstractCellEditor implements TableCellEditor { //This is the component that will handle the editing of the cell value private JComponent component = new JTextField(); //This method is called when a cell value is edited by the user. public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int rowIndex, int vColIndex) { // 'value' is value contained in the cell located at (rowIndex, vColIndex) if (isSelected) { // cell (and perhaps other cells) are selected } // Configure the component with the specified value ((JTextField)component).setText((String)value); // Return the configured component return component; } // This method is called when editing is completed. // It must return the new value to be stored in the cell. public Object getCellEditorValue() { return ((JTextField)component).getText(); } }
Merci d'avance à tout ceux qui se pencheront sur mon problème, je pense que c'est relativement simple mais je n'ai rien trouvé dans la base...
J'ai pensé à une solution, dans le cas ou l'utilisateur clique pour la première fois sur cette case, je retourne simplement un JLabel avec une couleur de fond bleue, si c'est la 2ème fois, je retourne le textfield, mais ca me parrait bien crade comme solution... Y'a pas moyen de faire gérer ca nativement par la JTable? Genre sur un simple clic, elle se contente de sélectionner, sur un double clic, elle appelle l'éditeur... Faut-il que je fasse un gestionnaire de sélection?
Edit : Merci adiGuba, la précipitation tout ca...![]()
Partager