스레드를 사용하여 AnchorPane의 불투명도를 변경합니다. 점진적으로 불투명도를 높이려면 onMouseEnter 메서드를 추가하고 점진적으로 불투명도를 줄이려면 onMouseExited 메서드를 추가합니다. 두 개의 창이 있습니다. 내 마우스 중 하나를 입력하면 두 개의 창 모두 불투명도가 변경됩니다. 그런 다음 응용 프로그램을 시작한 후 마우스를 몇 번 입력하고 나가면 특정 불투명도에서 멈추고 나머지는 여전히 불투명도를 변경합니다. 나는 이런 일이 왜 혼란 스러워요 ... 내 코드는 같은 수 있습니다 :javafx setOpacity 메서드가 일부 시간 반복 될 때 작동하지 않습니다.
private double base = 0.5;
private void changeOpacity(boolean increase){
new Thread(()-> {
while((increase && base < 0.9) || ((!increase)&&base > 0.5)){
base += increase?0.01:-0.01;
leftPane.setOpacity(base);
rightPane.setOpacity(base);
Thread.sleep(5);
}
}
}
나는 불쌍한 내 영어 죄송합니다. 고맙습니다.
변수는 스레드 로컬 캐시 (A ParallelTransition와 함께) 키 프레임
UI를 백그라운드 스레드에서 변경할 수 없습니다. 당신은'Platform.runLater (...)'에서'setOpacity (...)'호출을 래핑 할 필요가있다. 하지만이 작업을 위해 [FadeTransition'] (http://docs.oracle.com/javase/8/javafx/api/javafx/animation/FadeTransition.html)을 사용하면 안됩니다. 첫 번째 장소에서 배경 스레드)? –