2010-08-02 89 views
2

我有一个由多个组件组成的自定义编辑器。像这样: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抓住焦点时编辑开始。当我单击单元格时它工作得很好,但当我用键盘导航表并开始在这个单元格中输入时,它没有问题。

我该如何解决这个问题?

回答

3

前段时间我有同样的问题,花了我很长时间才找到解决办法。尝试了很多focuslistener和东西,但似乎没有任何工作方式,我想它,直到我发现这个由Santhosh库马尔useful article

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