有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我创建了一个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键后开始键入。我将感谢任何帮助。谢谢


共 (1) 个答案

  1. # 1 楼答案

    我找到了解决上述问题的办法。我在以下链接中找到了它: 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();
            }
        }
    };