0
除了使用計時器以外,如何在自定義標籤上創建閃爍效果?JAVAFX還有什麼其他方式可以讓標籤閃爍,而不是使用時間軸?
下面是我使用的一個可行的例子...
自定義標籤類
public class CustomLabel extends Label{
public CustomLabel(String text1){
super(text1);
setAlignment(Pos.CENTER);
//for blinking effect
TIMER = new Timeline(
new KeyFrame(Duration.seconds(1),ae->ChangeColor1()),
new KeyFrame(Duration.seconds(2),ae->ChangeColor2())
);
TIMER.setCycleCount(Animation.INDEFINITE);
TIMER.play();
}
public void ChangeColor1(){
setTextFill(Color.Pink);
}
public void ChangeColor2(){
setTextFill(Color.Blue);
}
}
主類
StackPane sp = new StackPane(new CustomLabel("Testing"));
Scene sc = new Scene(sp)
primaryStage.setScene(sc)
sc.show();
有什麼辦法使這種方法「打火機」?
不知怎的,這種方法會導致下保持一整天
java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.OutOfMemoryError: Java heap space
如何解決這個任何建議在運行應用程序後的錯誤?這個應用程序需要運行超過1整天。
好吧,這很有趣...你只需運行你發佈的代碼即可獲得OOME?如果是這樣,那是一個錯誤。 –
您可以在時間軸上設置autoReverse,因此您不必設置兩種顏色。 'TIMER.setAutoReverse(true);'它也有可能是因爲它不停地運行新的關鍵幀,所以它沒有機會進入回收站它將填滿內存,可能只是一個非常大的cycleCount可能成爲答案(如果它的按鈕可能會讓它在按鈕上放置一整天?) – TravisF
@James_D yup,最初當我的應用程序沒有這種閃爍效果時,它可以運行幾天沒有任何錯誤拋出。 – Ronaldo