Starten Sie die Bearbeitung in einer Zelle in JTable auf gewinnen konzentrieren
Habe ich definiert cell-Editoren für die zwei Spalten in meiner Tabelle in der folgenden Art und Weise:
Java-Code:
JComboBox combo = new JComboBox();
//code to add items to the combo box goes here.
JTextField textField = new JTextField();
textField.setHorizontalAlignment(JTextField.RIGHT);
TableColumn column = myJTable.getColumnModel().getColumn(0);
column.setCellEditor(new DefaultCellEditor(combo));
column = myJTable.getColumnModel().getColumn(1);
column.setCellEditor(new DefaultCellEditor(textField));
Das problem, das ich konfrontiert ist, dass, wenn ein Mittelpunkt verschoben wird, um eine Tabelle Zelle, die Zelle wird nicht automatisch bearbeitet werden. Also, wenn sich der Fokus verschoben in die Spalte 2 (mit einen text-Feld als editor), das caret-Zeichen nicht angezeigt, es sei denn, die Zelle doppelt geklickt wird oder der Benutzer mit der Eingabe beginnt. Ähnlich ist der Fall für die Spalte 1 (das hat eine combo-box als Redakteur), da hier die combo-box nicht angezeigt, wenn auf die Zelle geklickt wird. Diese Verhaltensweisen sind unlogisch und nicht wünschenswert für einen Benutzer die Bedienung mit der Tastatur.:(
Bitte Hinweise, wie diese gelöst werden könnten.
Vielen Dank im Voraus.
- Sie können
JComboBox
als cell-renderer als gut. Sie können auch nutzen Sie DefaultCellEditor.setClickCountToStart zum überschreiben der Standard-Doppelklick-Verhalten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
So kommentierte vor, die Sie verwenden können, JComboBox, die sowohl als renderer und editor. Unten ist ein sehr einfaches Beispiel. Es zeigt auch, DefaultCellEditor.setClickCountToStart() Nutzung.
Diese Beispiel überschreibt
editCellAt()
imJTable
mit einemDefaultCellEditor
mitJTextField
.Können Sie binden die Raum - Taste, um die
startEditing
Aktion definiert, die fürJTable
: