Wie implementiere ich die automatische Vervollständigung in einer Zelle in JTable?
In meinem JTable ist ein Zelleneditor als Instanz der DefaultCellEditor-Klasse (JComboBox) implementiert. Ich habe ein paar verschiedene Dinge ausprobiert (Hinzufügen von Auto-Vervollständigungs-Unterstützung zu Swing Comboboxen) aber es funktioniert immer noch nicht.
1:
//
JComboBox combo = new JComboBox(new Object[] { "Ester", "Jordi", "Jordina", "Jorge", "Sergi" });
AutoCompleteDecorator.decorate(combo);
DefaultCellEditor cellEditor = new DefaultCellEditor(combo);
TableColumn column = myTable.getColumnModel().getColumn(2);
column.setCellEditor(cellEditor);
//
2:
//
Object[] elements = new Object[] { "Ester", "Jordi", "Jordina", "Jorge", "Sergi" };
JComboBox c = new JComboBox(elements);
c.setEditable(true);
AutoCompleteSupport support = AutoCompleteSupport.install(c, GlazedLists.eventListOf(elements));
support.setSelectsTextOnFocusGain(false);
support.setHidesPopupOnFocusLost(false);
support.setStrict(false);
ComboBoxCellEditor combo = new ComboBoxCellEditor(c);
TableColumn column = myTable.getColumnModel().getColumn(2);
ComboTableCellRenderer renderer = new ComboTableCellRenderer();
column.setCellRenderer(renderer);
column.setCellEditor(combo);
//
3:
//
Object[] elements = new Object[] { "Ester", "Jordi", "Jordina", "Jorge", "Sergi" };
JComboBox comboBox = new JComboBox(elements);
comboBox.setEditable(true);
AutoCompletion ac = new AutoCompletion(comboBox);
ac.setStrict(false);
DefaultCellEditor cellEditor = new DefaultCellEditor(comboBox);
TableColumn column = myTable.getColumnModel().getColumn(2);
column.setCellEditor(cellEditor);
//
Das Problem, mit dem ich konfrontiert bin, besteht darin, dass der Benutzer, sobald er das Kombinationsfeld eingibt, den Bearbeitungsmodus verlässt und somit die Eingabe von Werten effektiv verhindert.