Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
variablen wert ändernung mit einer art actionlistener?
gibts ne möglichkeit eine wertänderung abzufangen und wenn sich der wert ändert eine action auszuführen?
ich hab das bis jetzt immer mit threads gelöst und in einem bestimmten zeitfenster immer wieder zu überprüfen, aber nun stell ich mal die frage obs sowas nicht für variablen gibt ähnlich wie bei buttons oder sowas
Wenn die Variable zu deiner Klasse gehört:
Mach's doch einfach so: Rufe jedes mal, wenn du die Variable änderst deine "Wert-Geändert-Methode" auf.
An Sonsten:
Beschreibe mal die Umstände des Problems und warum du das brauchst. Vielleicht gibt's ja eine bessere Lösung?
Das geht mit Referenzen.
Wenn etwas getan werden soll schicken sich die Objekte Nachrichten. Sie rufen also gegenseitig ihre Methoden auf.
Guck mal in die FAQ: http://www.java-forum.org/de/viewtopic.php?p=87333
Das erste Beispiel bei Variante Referenzübergabe zeigt, wie dieses Prinzip funktioniert.
Jede Änderung einer Variablen überhaupt nur zu bemerken, ist schon recht schwierig - unmöglich sogar, wenn man sich nicht in die absoluten Niederungen der VM begeben will.
Normalerweise würde man für solche Problem erstmal konsequent set- und get-Methoden einsetzen, so dass die Variable selbst ausser in diesen beiden Zugriffsmethoden niemals angefasst wird. Dann hat man mit der set-Methode einen Punkt, an dem ansetzen kann.
Für die Benachrichtung selbst bietet sich das Observer/Observable-Pattern an.
Bsp.: (Achtung, nur hier im Editor erfasst und noch nicht kompiliert):
Code:
import java.util.Observer;
public class C1 extends Observable {
private int interessanterWert;
private Observer
public int getWert() {
return interesssanterWert;
}
public void setWert( final int interessanterWert) {
this.interessanterWert = interessanterWert;
notifyObservers( this.interessanterWert);
}
public int increment() {
setWert( getWert()+1);
return getWert();
}
public int decrement() {
setWert( getWert()-1);
return getWert();
}
}
Code:
import java.util.Observable;
import java.util.Observer;
public class C2 implements Observer{
public void update( Observable obs, Object arg) {
System.out.println( "C2#update: Observable " + obs + " has changed, arg = " + arg);
}
public static void main( String[] args) {
C1 c1 = new C1();
C2 c2 = new C2();
c1.addObserver( c2);
c1.increment();
c1.increment();
c1.decrement();
}
}