Moin zusammen,
mein Ziel ist es ein Text Feld zu haben, welches Punkte im Interval anhängt. Sodass ein "Laden" signalisiert wird.
Dazu habe ich mir gedacht, dass es doch schön wäre, wenn ich von
javafx.scene.text.Text erbe und dazu noch die Klasse als Runnable gestalte. Das funktioniert leider nicht und führt zu folgenden Fehler:
Der Konstruktor wird etliche Male aufgerufen und somit startet der Thread auch dementsprechend oft und nicht wie von mir erwartet ein einziges Mal.
Mein Code:
Gibt es hier zu einen besseren Weg?
mein Ziel ist es ein Text Feld zu haben, welches Punkte im Interval anhängt. Sodass ein "Laden" signalisiert wird.
Dazu habe ich mir gedacht, dass es doch schön wäre, wenn ich von
javafx.scene.text.Text erbe und dazu noch die Klasse als Runnable gestalte. Das funktioniert leider nicht und führt zu folgenden Fehler:
Code:
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:894)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:56)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:158)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.StackOverflowError
at javafx.scene.Node.getScene(Node.java:873)
at javafx.scene.Node.updateCanReceiveFocus(Node.java:7864)
at javafx.scene.Node.setTreeVisible(Node.java:7772)
at javafx.scene.Node.updateTreeVisible(Node.java:7763)
at javafx.scene.Node.<init>(Node.java:2298)
Der Konstruktor wird etliche Male aufgerufen und somit startet der Thread auch dementsprechend oft und nicht wie von mir erwartet ein einziges Mal.
Mein Code:
Code:
package frontend.layout.controls;
import javafx.scene.text.Text;
public class SearchText extends Text implements Runnable {
String originalText;
static Thread thread;
public SearchText() {
super();
originalText = this.getText();
if(thread == null) {
thread = new Thread(new SearchText());
thread.start();
}
}
@Override
public void run() {
while(true) {
if(getText().contains("..."))
setText(originalText);
setText(originalText + ".");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Gibt es hier zu einen besseren Weg?