Tengo un campo de texto en mi aplicación que se iniciará mediante programación (textField.setText()) cuando el usuario hace clic en un elemento en JList. después, el usuario cambiará este valor manualmente. Me quedo atascado con el uso de document-listener para detectar cambios en este campo de texto. Cuando los cambios se producen de forma programática, no deben hacer nada, pero si se produce manualmente, debería cambiar el fondo a rojo.¿Cómo hacer la diferencia entre textField.setText() y agregar texto a textField manualmente en java?
Cómo detectar si textField se ha completado manualmente o mediante 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
}
});
El problema aquí es que algunas veces el setText() es llamado por alguien que no es su propio código. Este es el problema contra el que estoy luchando en este momento, de todos modos. Ojalá pudieran haber tenido un wasTriggeredByUser() en cada evento. – Trejkaz
@Trejkaz, por favor, cómo, dónde, por qué, hay alguna razón especial, por cierto, el documento es el modelo para JTextComponents, luego consume/dispara todos los cambios y eventos entre los que se puede ver el modelo y viceversa – mKorbel