2010-08-02 7 views
2

J'ai un éditeur personnalisé composé de plusieurs composants. Quelque chose comme:JTable - focus de l'éditeur composé

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(); 
    } 
} 

Je veux que le textArea intérieur de saisir mise au point lors de l'édition commence. Cela fonctionne très bien quand je clique sur la cellule, mais pas quand je navigue sur la table avec le clavier et commence à taper dans cette cellule.

Comment puis-je résoudre ce problème?

Répondre

3

J'ai eu le même problème il y a quelque temps et m'a pris des âges pour trouver une solution. Essayé beaucoup avec focuslistener et d'autres choses, mais rien ne semblait vraiment fonctionner comme je le voulais jusqu'à ce que je trouve ce useful article par Santhosh Kumar.

Son bien écrit et devrait résoudre votre problème.