Java 在使用JComboBox作为单元格编辑器的JTable单元格中编辑焦点
我创建了一个JComboBox,并使用以下代码将其用作表中某一列的单元格编辑器:Java 在使用JComboBox作为单元格编辑器的JTable单元格中编辑焦点,java,jcombobox,tablecelleditor,Java,Jcombobox,Tablecelleditor,我创建了一个JComboBox,并使用以下代码将其用作表中某一列的单元格编辑器: iledgerEditortxt = new JComboBox(buildComboBoxmodel("SELECT ledger_name FROM ledgers")); AutoCompleteDecorator.decorate(iledgerEditortxt); TableColumn ledgerColumn = itemsMaintainTable.getColumnModel().getColu
iledgerEditortxt = new JComboBox(buildComboBoxmodel("SELECT ledger_name FROM ledgers"));
AutoCompleteDecorator.decorate(iledgerEditortxt);
TableColumn ledgerColumn = itemsMaintainTable.getColumnModel().getColumn(2);
ledgerColumn.setCellEditor(new ComboBoxCellEditor(iledgerEditortxt));
我还允许用户使用tab键在表中的单元格之间移动。我遇到的问题是,当一个单元格由于使用tab键而获得焦点时,用户应该能够使用键盘开始编辑。除了使用JComboBox作为单元编辑器的列之外,这在所有情况下都有效。对于该列,用户必须用鼠标单击单元格一次,然后才能从键盘键入。我希望用户能够在使用tab键后开始键入。我将感谢任何帮助。谢谢。我找到了解决上述问题的方法。我在以下链接中找到了它: 解决方案包括通过编写changeselection方法修改表的声明:
JTable table = new JTable(data, columnNames) {
public void changeSelection(int row, int column, boolean toggle, boolean extend) {
super.changeSelection(row, column, toggle, extend);
if (editCellAt(row, column))
{
Component editor = getEditorComponent();
editor.requestFocusInWindow();
}
}
};