RealHAZZARD
Erfahrenes Mitglied
Hallo,
folgende Situation:
Ich glaube gehört zu haben, dass so sicher gegangen werden soll, dass man sich nicht in einer Enlosschleife verrennt(kann ja leicht passieren, wenn man auf Änderungen reagiert, und dann eine Änderung macht ;-)). Aber ich sehen nicht wo ich eine Endlosschleifen haben soll. Gibts da einen Trick, wie ich das TextFeld dazu überreden kann, dass das keine Endlosschleife ist, oder hab ich da wirklich eine reingebaut?
folgende Situation:
Java:
...
public void addTextComponent(final JTextComponent jtc){
jtc.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
textChanged(jtc);
}
public void removeUpdate(DocumentEvent e) {
textChanged(jtc);
}
public void changedUpdate(DocumentEvent e) {
textChanged(jtc);
}
});
allTextComponents.add(jtc);
}
private void textChanged(JTextComponent jtc){
//Hier wird nur einiges geprüft(nicht relevant)
try {
//Value ist global vorhanden und ist nur da um sich den alten Wert zu speichern.
PropertyChangeEvent pce = new PropertyChangeEvent(this,associationName,value,jtc.getText());
//Dieser Listener prüft diesen Wert und ändert ihn ggf. Auf jeden Fall ruft er danach die in dieser Klasse aufgeführte Mehtode setValue(String value) auf
if (observer!=null)observer.vetoableChange(pce);
} catch (PropertyVetoException ex) {
...
}
}
public void setValue(String value) {
if (value == null)
value = "";
this.value = value;
for (JTextComponent jtc : allTextComponents) {
if (!jtc.getText().equals(value)) {
// hier bekomme ich die llegalStateException ("Attempt to mutate in notification")
jtc.setText(value);
}
}
}
...
Ich glaube gehört zu haben, dass so sicher gegangen werden soll, dass man sich nicht in einer Enlosschleife verrennt(kann ja leicht passieren, wenn man auf Änderungen reagiert, und dann eine Änderung macht ;-)). Aber ich sehen nicht wo ich eine Endlosschleifen haben soll. Gibts da einen Trick, wie ich das TextFeld dazu überreden kann, dass das keine Endlosschleife ist, oder hab ich da wirklich eine reingebaut?