Non è per forza di cose necessario estendere DefaultCellEditor. Se vuoi farlo per "incapsulare" magari la creazione del JTextField e del tuo document .... beh, ok!Originariamente inviato da newhook
codice:public class CellaEditabile extends DefaultCellEditor{
Infatti ... perché dovresti passare un JTextField!! A questo punto, "incapsula" tutto ... no?
Nota: non so come hai gestito DocumenControl ma se usi una espressione regolare pensando di controllare l'intero contenuto devi stare molto attento!! Perché nel insertString() ti viene passata solo la parte da aggiungere .... e se la aggiunta arriva dalla tastiera solo 1 carattere per volta!
A dire il vero non sarebbe nemmeno necessario estendere JTable e fare l'override di prepareRenderer. Primo perché come hai fatto istanzi il tuo CellaEditabile tante volte, ogni volta che un renderer viene "preparato" e poi comunque ha poco senso che lo fai in relazione ad un renderer!!Originariamente inviato da newhook
codice:public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
L'ho detto prima: puoi associare l'editor ad una colonna specifica (prendi il TableColumnModel e poi il TableColumn per la colonna x e setti l'editor) oppure associ l'editor ad un Class (Object.class va bene se usi uno dei model di default) in modo che valga per tutte le celle di quel tipo.

Rispondi quotando