2010-08-02 83 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

它寫得很好,應該解決你的問題。