繁体   English   中英

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

[英]Editing focus in a JTable cell that uses a JComboBox as a cell editor

我创建了一个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键后能够开始键入内容。 我将不胜感激任何帮助。 谢谢。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM