我这里有一个非常简单的问题.
当用户在我选择了一行后单击"编辑"按钮时JTable,软件会检查是否允许编辑该行.
如果是,我想将焦点放在该行的第一个单元格中,并使用闪烁的光标,以便用户可以直接在单元格中键入内容.
由于isEditable()方法,我可以成功设置行是否可编辑,我table.editCellAt(selectedRow, 0)用来开始编辑.
然而
1)该单元格中没有闪烁的光标
2)用户无法立即输入单元格(他仍然需要双击单元格)
有关如何实现这一目标的任何建议?
//////////////////// UPDATE //////////////////////
虽然MadProgrammer的评论解决了这个问题,但它只解决了部分问题,但那是因为我还不够精确.
实际上,当我执行他用"经典JTable"描述的步骤时,即:
table.editCellAt(selectedRow, 0);
table.setSurrendersFocusOnKeystroke(true);
table.getEditorComponent().requestFocus();
Run Code Online (Sandbox Code Playgroud)
我得到闪烁的光标和立即键入的能力.
然而,缺少的部分是我给用户2个选项.
1)他可以直接手动选择表格中的一行,为此解决方案很好.
2)但我也为用户提供了使用JTextField更容易找到他正在搜索的行的能力.为此,我使用带有regexFilter的TableRowSorter来过滤显示的行.当我在那里尝试MadProgrammer的解决方案(带过滤)时,我得到了一个java.lang.NullPointerException,并且没有进行进一步的编辑.
这是一个例外:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at dialogs.DialogEditCouleurs.actionPerformed(DialogEditCouleurs.java:229)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud)