Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用JComboBox作为单元格编辑器的JTable单元格中编辑焦点_Java_Jcombobox_Tablecelleditor - Fatal编程技术网

Java 在使用JComboBox作为单元格编辑器的JTable单元格中编辑焦点

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

我创建了一个JComboBox,并使用以下代码将其用作表中某一列的单元格编辑器:

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();
        }
    }
};