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

时间:2014-02-15 17:28:46

标签: java jcombobox tablecelleditor

我使用以下代码创建了一个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键从表格中移动到单元格。我遇到的问题是,当单元格因使用制表符而获得焦点时,用户应该能够使用键盘开始编辑。除了使用JComboBox作为单元格编辑器的列之外,这适用于所有情况。对于该列,用户必须用鼠标单击一次单元格,然后才能从键盘输入。我希望用户能够在他/她使用Tab键后开始输入。我将不胜感激任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

我找到了上述问题的解决方案。我在以下链接中找到了它: http://www.java-forums.org/awt-swing/29040-programmatically-starting-cell-editing-jtable.html 解决方案涉及通过编写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();
        }
    }
};