我的程序中有一個jFormattedTextField,當jFormattedTextField值被有效更改時,我需要更新jLabel的文本。
其實jFormattedTextField獲取一個數字,jLabel顯示這個數字和另一個數字之間的差異。
我目前通過聽jFormatted文本的「FocusLost」事件來做到這一點。在jFormattedTextField上放置「On Change」偵聽器
我該怎麼做?
我的程序中有一個jFormattedTextField,當jFormattedTextField值被有效更改時,我需要更新jLabel的文本。
其實jFormattedTextField獲取一個數字,jLabel顯示這個數字和另一個數字之間的差異。
我目前通過聽jFormatted文本的「FocusLost」事件來做到這一點。在jFormattedTextField上放置「On Change」偵聽器
我該怎麼做?
註冊屬性「值」一個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,解析發生之前),後者是太脆。
可能最簡單的方法是使用您附加到文本字段的javax.swing.event.DocumentListener
。然後,隨着用戶輸入,標籤可以更新。
我不記得確切的順序,但可以在格式化的文本字段被驗證之前調用收聽者的insertUpdate()
。因此,您可能還需要檢查聽衆中的有效號碼。