Hey Leute,
ich versuche gerade eine ObservableList mit ChangeListener zu implementieren. Die Liste "ListOfObjects" bekommt nach jeder halben Sekunde ein neues Objekt über einen Timer.
Die Objekte sind derzeit nur Testobjekte die nur einen Namen haben:
Die Klasse "TestListe" hat einen ChangeListener der mich über Änderungen informieren soll.
Die Änderungen teilt er mir über den Ausgabebefehl zwar mit, aber nur in der Form { [TestObjekt@641bd0a2] added at 4 }:
Dass das Objekt nicht einfach so als String ausgegeben werden kann ist mir klar, aber wie kann ich auf die Werte des Objekts direkt zugreifen?
Ich hab mir auch überlegt den Ausgabewert zu splitten, das letzte Element (was ja der Index ist) in ein Integer zu schreiben, damit die Liste zu durchsuchen und dann auf das Objekt zuzugreifen. Das kann aber doch nicht die Lösung sein.
Gibt es eine Methode die mir nur den Index oder nur die Werte des Elements (bzw das Element selbst) ausgibt welches sich ändert, oder geht es tatsächlich nur über einen Split?
Danke im Voraus und LG
Edit: Hatte überlegt das Thema im JavaFX Bereich zu erstellen aber es ist ja dann doch auch ein Basic Thema
ich versuche gerade eine ObservableList mit ChangeListener zu implementieren. Die Liste "ListOfObjects" bekommt nach jeder halben Sekunde ein neues Objekt über einen Timer.
Code:
import java.util.Timer;
import java.util.TimerTask;
public class NeuerTimer {
Timer timer;
public NeuerTimer() {
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
TestObjekt Objekt = new TestObjekt("TestName");
TestListe.ListOfObjects.add(Objekt);
}
}, 10, 500);
}
}
Die Objekte sind derzeit nur Testobjekte die nur einen Namen haben:
Code:
public class TestObjekt {
private String name;
public TestObjekt(String name) {
this.setName(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Die Klasse "TestListe" hat einen ChangeListener der mich über Änderungen informieren soll.
Code:
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
public class TestListe {
static ObservableList<TestObjekt> ListOfObjects = FXCollections.observableArrayList();
public static void main(String[] args) {
new NeuerTimer();
ListOfObjects.addListener(new ListChangeListener<TestObjekt>() {
@Override
public void onChanged(Change<? extends TestObjekt> arg0) {
System.out.println(arg0);
}
});
}
}
Die Änderungen teilt er mir über den Ausgabebefehl zwar mit, aber nur in der Form { [TestObjekt@641bd0a2] added at 4 }:
Dass das Objekt nicht einfach so als String ausgegeben werden kann ist mir klar, aber wie kann ich auf die Werte des Objekts direkt zugreifen?
Ich hab mir auch überlegt den Ausgabewert zu splitten, das letzte Element (was ja der Index ist) in ein Integer zu schreiben, damit die Liste zu durchsuchen und dann auf das Objekt zuzugreifen. Das kann aber doch nicht die Lösung sein.
Gibt es eine Methode die mir nur den Index oder nur die Werte des Elements (bzw das Element selbst) ausgibt welches sich ändert, oder geht es tatsächlich nur über einen Split?
Danke im Voraus und LG
Edit: Hatte überlegt das Thema im JavaFX Bereich zu erstellen aber es ist ja dann doch auch ein Basic Thema