bloggers bloggers

Marco Napolitano
Messaggi: 68
Stelle: 0
Data: 15/11/17
Jader Jed Francia
Messaggi: 50
Stelle: 0
Data: 22/09/17
Ezio Lombardi
Messaggi: 9
Stelle: 0
Data: 23/06/17
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
marcello marangio
Messaggi: 4
Stelle: 0
Data: 05/07/13
Marco Mancini
Messaggi: 1
Stelle: 0
Data: 05/06/13
Indietro

Searcher nelle swing con due righe di codice!

Assunto questo oggetto:
JFormattedTextField fornitoreTextField = new JFormattedTextField();

....
this.fornitoreTextField.setFormatterFactory(new AbstractFormatterFactory() {

@Override
public AbstractFormatter getFormatter(JFormattedTextField tf) {
return new AbstractFormatter() {

@Override
// Questo metodo viene richiamato quando scrivete qualche cosa

// dentro al campo e poi cambiate il focus con il tab o date l'invio.
// Lo String che viene passato e' il testo che digitate...
public Object stringToValue(String fornitore) throws ParseException {
// Decodifico il fornitore andando sul db;

// il risultato lo setto su

// this.fornitoreTextField.setValue(ilMioOggettoTrovatoDalDb);
// Se non riesco a decodificarlo potete sollevare una ParseException;
// questo __CANCELLA__ quanto digitato nel campo,

//in modo che l'utente s'accorga dell'errore.
Fornitore fornitore = decodificaFornitore(fornitore);
setValue(fornitore);
return fornitore;
}

@Override
// Questo metodo viene invocato quando si chiama il setValue()

// sull'oggetto JFormattedTextField
// È quello che ha la responsabilità di mostrare le scritte

//dentro al widget "decodificando" un oggetto.
public String valueToString(Object value) throws ParseException {
// Controllo che l'oggetto che mi arriva sia quello che mi
aspetto..

// Occhio alle ClassCastException:

// sono __SEMPRE__ in agguato! :)
if (value instanceof Fornitore) {
Fornitore fornitore = (Fornitore) value;
// Dell'oggetto mostro solo quello che mi interessa
return fornitore.getRagSociale().trim();
}
return null;
}};
}});
}

Un secondo aspetto importante di questo approccio è, banalmente, quello di poter utilizzare il JFormattedTextField come "contenitore" degli oggetti decodificati.
In questo modo nel codice applicativo posso accedervi sempre usando il getValue() -con opportuno typecast- anziche' dovervi settare, magari, un field privato di classe per tenere la stessa informazione.

Precedente
Commenti
Nessun commento. Vuoi essere il primo.