Olá,
Estou tendo um problema que é o seguinte. Criei um JFormattedTextfield com um MaskFormatter como default formatter da seguinte forma:
AbstractFormatter cartaoDisplayFormatter = null;
try {
cartaoDisplayFormatter = new MaskFormatter ("#### #### #### ####");
} catch (Exception e) {
e.printStackTrace();
}
DefaultFormatterFactory cartaoFormatterFactory = new DefaultFormatterFactory (cartaoDisplayFormatter);
ValueModel cartaoVM = presentationModel.getModel(Cartao.PROPERTYNAME_NUMERO);
BasicComponentFactory.createFormattedTextField(cartaoVM, cartaoFormatterFactory);
Depois coloquei um um PropertyChangeListener no presentationModel:
presentationModel = new PresentationModel<Cartao>(new Cartao()); presentationModel.addBeanPropertyChangeListener( new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
System.out.println();
System.out.println("Fonte: " + evt.getSource());
System.out.println(
"alterou '" + evt.getPropertyName()
+ "' de '" + evt.getOldValue()
+ "' para '" + evt.getNewValue() + "'.");
}
});
Classe Cartao:
[code]public class Cartao extends Model
{
public static final String PROPERTYNAME_NUMERO = “numero”;
private String numero;
//...Outros atributos
public void setNumero(String numero)
{
String numeroAntigo = numero;
this.numero = numero;
firePropertyChange(PROPERTYNAME_NUMERO, numeroAntigo, this.numero);
}[/code]
O problema que está acontecendo é que quando está ocorrendo uma alteração no ValueModel cartaoVM, o listener não está sendo avisado. Ocorre apenas com os ValueModel em que o formattedtextfield usa o maskformatter, os demais estão funcionando normalmente.
Se alguém puder me ajudar a resolver este problema fico muito grato.
Valeu!