|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2007
Messaggi: 33
|
[Java][FormattedTextFieldVerifier]
Salve a tutti e un grazie per la disponibilità e conpetenza del forum!!
Cerco invano di controllare se un campo d' inserimento testo sia vuoto o meno il campo è JFormattedTextField campoTesto1 sto utilizzando questa classe : public class FormattedTextFieldVerifier extends InputVerifier { public boolean verify(JComponent input) { if (input instanceof JFormattedTextField) { JFormattedTextField ftf = (JFormattedTextField)input; JFormattedTextField.AbstractFormatter formatter = ftf.getFormatter(); if (formatter != null) { String text = ftf.getText(); try { formatter.stringToValue(text); return true; } catch (ParseException pe) { return false; } } } return true; } public boolean shouldYieldFocus(JComponent input) { return verify(input); } } nel programma principale invece alla presione del tasto ok public void actionPerformed(ActionEvent e) { FormattedTextFieldVerifier p= new FormattedTextFieldVerifier() ; boolean ved=p.verify(campoTesto1); La variabile ved risulta sempre true anche se non insrisco nessun carattere nel campo .Per quale motivo?? ciao e grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ehm ... ho la vaga impressione che non ti sia chiaro come si utilizza un InputVerifier.
InputVerifier è una classe astratta che va estesa per poter definire un proprio criterio di validazione dell'input (implementando in genere solo verify()). Si deve quindi creare una istanza di questa sottoclasse e passarla al componente da gestire tramite il metodo setInputVerifier() di JComponent (quindi esiste per tutti i componenti Swing che estendono JComponent). Prima che il focus venga trasferito ad un altro componente, viene fatto il controllo e se l'input non è valido, il focus rimane su componente. Insomma ... il concetto è che un InputVerifier serve per far sì che il focus non possa passare ad un altro componente se l'input non è valido. Tutto qua. ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2007
Messaggi: 33
|
grazie per la risposta!!
vediamo un po se ho capito class FormattedTextFieldVerifier extends InputVerifier { public boolean verify(JComponent component) { JFormattedTextField field =(JFormattedTextField) component; return field.isEditValid(); } } nel programma principale ...campoTesto1 e il campo su cui voglio fare il controllo quindi campoTesto1.setInputVerifier(new FormattedTextFieldVerifier()); FormattedTextFieldVerifier p= new FormattedTextFieldVerifier() ; boolean ved=p.verify(campoTesto1); ma ved ritorna sempre true anche quando il campo è vuoto potresti darmi una mano purtroppo il discorso non mi è chiaro ciao grazie mille |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Comunque la questione è che una volta che hai impostato un tuo InputVerifier tramite il metodo setInputVerifier(), non devi fare null'altro! È il componente che si occupa di "sentire" quando il focus sta per essere trasferito, interrogare il InputVerifier e fare ciò che è necessario in base alla risposta.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:13.