2011-09-01 13 views
8

Programımda jFormattedTextField var ve jFormattedTextField değeri geçerli olarak değiştirildiğinde jLabel'in metnini güncellemem gerekiyor.
Aslında jFormattedTextField bir sayı alır ve jLabel bu sayı ile başka bir sayı arasında fark görüntüler.
Şu anda jFormatted metninin "FocusLost" olayını dinleyerek bunu yapıyorum.jFormattedTextField üzerinde "On Change" dinleyiciyi ekleme

Bunu nasıl yapabilirim?

cevap

10

formattedField mülk "değeri" için PropertyChangeListener kayıt

PropertyChangeListener l = new PropertyChangeListener() { 

     @Override 
     public void propertyChange(PropertyChangeEvent evt) { 
      String text = evt.getNewValue() != null ? evt.getNewValue().toString() : ""; 
      label.setText(evt.getNewValue()); 
     } 
    }; 
    formattedTextField.addPropertyChangeListener("value", l); 

DocumentListener ne de FocusListener kullanmayın: (her keytyped üzerine ayrıştırma olmadan önce,) eski çok sık bildirilir ikincisi çok kırılgandır .

1

Muhtemelen bunu yapmanın en kolay yolu, metin alanına eklediğiniz bir javax.swing.event.DocumentListener kullanmaktır. Daha sonra, kullanıcı türleri olarak, etiket güncellenebilir.

Tam diziyi hatırlamıyorum, ancak biçimlendirilmiş metin alanı doğrulanmadan önce dinleyici insertUpdate() çağrılabilir. Yani, dinleyicinizde de geçerli numaralar kontrol etmeniz gerekebilir.