我有一個帶有documentListener的JTextField。當我向該文本字段添加或刪除字符時,我想更改背景顏色。我應該使用文檔偵聽器是否正確?它可以工作,但是當我獲得並失去對這個JTextfield的焦點時,它也會觸發,這是不受歡迎的。我沒有在這個JTextField上添加一個焦點偵聽器。這是我的代碼,關於如何解決我的問題的任何建議?爲什麼更改焦點時,insertUpdate在我的DocumentListener中被調用? (Java Swing)
numPlotRowsJTextField = BasicComponentFactory.createIntegerField(valueModelNumberPlotRowsJTextField);
numPlotRowsJTextField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e)
{
}
@Override
public void insertUpdate(DocumentEvent e)
{
numPlotRowsJTextField.setBackground(Color.cyan);
}
@Override
public void changedUpdate(DocumentEvent e)
{
}
});
另請注意,我正在使用JGoodies綁定,我開始相信這個問題的根源。 Swing w/o JGoodies不應該通過改變焦點來觸發文件聆聽者事件...
我認爲JGoodies Binding在某種程度上攪亂了我。即使我只是改變焦點,它也必須導致DocumentListener觸發insertUpdate。這可能與我使用JGoodies緩存輸入的面部表情以及允許我輕鬆重置輸入的觸發器有關。任何JGoodies有約束力的專家? – smuggledPancakes 2011-01-06 15:49:45