c'est donc la première fois que j'ai essayé d'utiliser CellEditors
pour mon JTable
pour intégrer JComboBox
et JSpinner
. Tout fonctionne bien comme prévu dans lequel je peux voir les valeurs dans le modèle JComboBox
ainsi que les valeurs du modèle JSpinner
.Comment faire JTable avec JComboBox répondre uniquement sur un double clic au lieu de simple clic
Cependant, j'ai remarqué qu'il affiche toujours les valeurs de JComboBox
dès que je fais un simple clic sur la colonne de JTable qui a le JComboBox
.
Il est pas très facile à utiliser parce que je pense que l'utilisateur préférerait double-cliquer sur une colonne de JTable
pour obtenir les valeurs de la boîte de liste déroulante et sélectionner les valeurs de celle-ci au lieu d'un seul clic. Comment puis-je modifier le comportement de JComboBox
pour afficher uniquement double cliquez sur?
Je pensais appliquer un MouseListener
au JComboBox
mais je ne sais pas quoi faire ensuite.
Voici ce que j'ai écrit jusqu'à maintenant.
public class ScheduleDayCellEditor extends DefaultCellEditor{
private JComboBox jcmbDays;
private JTable jtblSchedule;
private DefaultComboBoxModel model;
public ScheduleDayCellEditor(){
super(new JComboBox());
model = new DefaultComboBoxModel(new String[]{"Mon","Tue","Wed","Thu","Fri"});
jcmbDays = new JComboBox(model);
jcmbDays.setEditable(false);
jcmbDays.setSelectedIndex(-1);
jcmbDays.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() == 2){
//? ? ? ?
}
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
return jcmbDays;
}
@Override
public Object getCellEditorValue() {
return jcmbDays.getSelectedItem(); //To change body of generated methods, choose Tools | Templates.
}
Voici une capture d'écran pour une description additionnelle.
Je vous remercie de toute aide.
Merci.
merci pour votre réponse. Je ne savais pas que je peux le remplacer à partir de la classe étendue DefaultCellEditor. C'est résolu. – p3ace