2011-09-01 9 views
8

पर "ऑन चेंज" श्रोता डालने पर मेरे प्रोग्राम में एक jFormattedTextField है और मुझे jFormattedTextField मान को वैध रूप से बदला गया है जब मुझे jLabel के पाठ को अपडेट करने की आवश्यकता है।
असल में jFormattedTextField को संख्या और jLabel प्रदर्शित करता है इस संख्या और दूसरे नंबर के बीच भिन्नता प्रदर्शित करता है।
मैं वर्तमान में jFormatted टेक्स्ट की "फोकसलोस्ट" घटना की सूची के द्वारा ऐसा करता हूं।jFormattedTextField

मैं यह कैसे कर सकता हूं?

उत्तर

10

संपत्ति "मूल्य" के लिए एक PropertyChangeListener रजिस्टर formattedField को

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 है और न ही FocusListener उपयोग न करें: पूर्व (, हर keytyped पर पार्स से पहले हुआ) भी अक्सर सूचित किया जाता है बाद भी भंगुर है ।

1

शायद ऐसा करने का सबसे आसान तरीका javax.swing.event.DocumentListener का उपयोग करना है जिसे आप टेक्स्ट फ़ील्ड से जोड़ते हैं। फिर, उपयोगकर्ता प्रकार के रूप में, लेबल अद्यतन किया जा सकता है।

मुझे सटीक अनुक्रम याद नहीं है, लेकिन श्रोता के insertUpdate() स्वरूपित टेक्स्ट फ़ील्ड को सत्यापित करने से पहले बुलाया जा सकता है। इसलिए, आपको अपने श्रोता में भी वैध संख्याओं की जांच करने की आवश्यकता हो सकती है।

संबंधित मुद्दे