我正在用一种电子表格程序编写搜索和替换功能。我想要的是,如果您搜索字符串,程序将显示带有已找到元素的表。

到目前为止,还不错,但是我无法获得带有焦点的元素来获得焦点,因此您可以立即开始输入。

我正在使用定制的JTable和定制的TableCellEditor。以下技巧似乎无效:
(在自定义的TableCellEditor内):

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        my_textfield.requestFocus();
    }
});

要么:
my_jtable.editCellAt(0, 3);
my_jtable.requestFocus();

要么
my_jtable.getEditorComponent().requestFocusInWindow();

我想念什么吗?有没有很好的描述(很好的流程图)来显示事件如何发生?还是可能执行类似操作的示例代码?

最佳答案

通过一些谷歌搜索,我发现了一个论坛主题:programmatically start editing a cell in a JTable回答如下:

(在JTable的子类中)

editCellAt(row,column);

requestFocus();
DefaultCellEditor ed = (DefaultCellEditor)
getCellEditor(row,column);

ed.shouldSelectCell(new ListSelectionEvent(this,row,row,true));

能行吗?

09-25 20:46