好的,这很难解释,但我会尽力而为。
我在 JTable 中有一个 JTextField 和一个 JComboBox,其 getCellEditor 方法已被覆盖,如下所示:
public TableCellEditor getCellEditor( int row, int column ) {
if ( column == 3 ) {
// m_table is the JTable
if ( m_table.getSelectedRowCount() == 1 ) {
JComboBox choices = new JComboBox();
choices.setEditable( true );
choices.addItem( new String( "item 1" ) );
return new DefaultCellEditor( choices );
}
return super.getCellEditor( row, column );
}
以下是行为差异(请注意,从现在开始,当我说 JTextField 或 JComboBox 时,我指的是 JTable 中包含任一组件的 CELL):
当我在 JTextField 上单击一次时,单元格会突出显示。双击会弹出插入符号,我可以输入文本。而对于 JComboBox,单击会调出插入符号以输入文本,以及组合下拉按钮。
当我使用 Tab 键或使用箭头键导航到 JTextField 然后开始输入时,我输入的字符会自动输入到单元格中。然而,当我以相同的方式导航到 JComboBox 然后开始输入时,除了出现组合下拉按钮之外什么都没有发生。除非我先按 F2,否则我输入的任何字符都不会被输入。
所以这是我的问题:在上述两个实例中,我需要做什么才能让 JComboBoxes 的行为与 JTextFields 完全一样?
请不要问我为什么要做我正在做的事情或建议替代方案(它就是这样,我需要这样做),是的,我已经阅读了所有相关组件的 API......问题是,它是一个swing API。