JTable - 复合编辑器焦点

时间:2010-08-02 10:12:58

标签: java swing jtable

我有一个由几个组件组成的自定义编辑器。类似的东西:

class MyCellEditor extends AbstractCellEditor implements TableCellEditor {
    JTextArea textArea;
    JButton button;
    JPanel panel;

    MyCellEditor() {
        textArea = new JTextArea();
        button = new JButton();
        panel = new JPanel(new BorderLayout());
        panel.add(textArea, BorderLayout.CENTER);
        panel.add(button, BorderLayout.EAST);
    }

    public Component getTableCellEditorComponent(JTable table, Object value,
            boolean isSelected, int row, int column) {
        textArea.setText((String) value);
        return panel;
    }

    public Object getCellEditorValue() {
        return textArea.getText();
    }
}

我希望内部textArea在编辑开始时抓住焦点。单击单元格时效果很好,但是当我用键盘导航表并开始在此单元格中输入时,它就不行了。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

前段时间我遇到了同样的问题,并花了很多时间才找到解决方案。用focuslistener和东西尝试了很多,但是在我找到Santhosh Kumar的这个useful article之前,似乎并没有真正按照我想要的方式工作。

写得很好,应该解决你的问题。