2017-08-20 2 views
0

Also das ist das erste Mal, dass ich versuchte CellEditors für meine JTable zu verwenden JComboBox und JSpinner einbetten. Alles funktioniert gut wie erwartet, wobei ich die Werte in JComboBox Modell sowie JSpinner Modellwerte sehen kann.Wie man JTable mit JComboBox reagiert nur auf Doppelklick anstelle von einem einzigen Klick

Allerdings habe ich festgestellt, dass es immer die JComboBox Werte zeigt, sobald ich einen einzigen Klick auf JTable Spalte, die die JComboBox hat.

Es ist nicht sehr benutzerfreundlich, weil ich der Benutzer denken würde auf eine JTable ‚s Spalte zu verdoppeln bevorzugen klicken die Dropdown-Box Werte und wählen Sie Werte aus es anstelle eines einzigen Klick.

Wie kann ich das JComboBox Verhalten nur auf Double klicken klicken?

Ich dachte, ich würde eine MouseListener auf die JComboBox anwenden, aber ich weiß nicht, was ich als nächstes tun soll.

Hier ist, was ich bisher geschrieben habe.

Hier ist ein Screenshot für zusätzliche Beschreibung.

enter image description here

würde ich jede Hilfe dankbar.

Vielen Dank.

Antwort

1

einfach isCellEditable außer Kraft setzen, indem weiteres Kriterium Anwendung:

@Override 
public boolean isCellEditable(EventObject aAnEvent) { 
    boolean cellEditable = super.isCellEditable(aAnEvent); 

    if (cellEditable && aAnEvent instanceof MouseEvent) { 
     cellEditable = ((MouseEvent) aAnEvent).getClickCount() == 2; 
    } 

    return cellEditable; 
} 
+0

danke für Ihre Antwort. Ich wusste nicht, dass ich es in der erweiterten Klasse DefaultCellEditor überschreiben kann. Es ist gelöst. – p3ace

1

Wenn Sie nicht brauchen DefaultCellEditor aus einem anderen Grund zu verlängern, können Sie einfach mit einem count von 2 seine setClickCountToStart() Methode aufrufen.

DefaultCellEditor editor = new DefaultCellEditor(jcmbDays); 
editor.setClickCountToStart(2); 
jcmbColumn.setCellEditor(editor); 
Verwandte Themen