我在我的應用程序中有一個textField,當用戶點擊JList中的一個項目時,將以編程方式啓動(textField.setText())。 以後用戶將手動更改此值。 我遇到了使用文檔偵聽器來檢測此文本字段中的更改。 當以編程方式發生更改時,它必須不做任何事情,但如果手動發生,它應該將背景更改爲紅色。如何區別textField.setText()和手動添加文本到textField在java中?
如何檢測textField是否已被手動填寫或通過textField.setText()?
txtMode.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
if (!mode.equals(e.getDocument()))
txtMode.setBackground(Color.red);
}
public void removeUpdate(DocumentEvent e) {
if (mode.equals(e.getDocument()))
txtMode.setBackground(Color.white);
}
public void changedUpdate(DocumentEvent e) {
//To change body of implemented methods
}
});
這裏的問題是,有時候setText()被某個不是你自己的代碼的人調用。無論如何,這就是我現在要面對的問題。我希望他們可以在每個事件上都有一個wasTriggeredByUser()。 – Trejkaz
@Trejkaz請問,如何,在哪裏,爲什麼有一些特殊的原因,btw文檔是JTextComponents的模型,然後消耗/觸發模型之間的所有更改/事件以查看,反之亦然 – mKorbel