2016-09-25 3 views
1

응용 프로그램이 전체 화면 모드 일 때 응용 프로그램 (미디어 플레이어)에서 위쪽 표시 줄과 아래쪽 표시 줄이 페이드 아웃됩니다. 나는 또한 몇 초 후에 커서를 페이드 아웃시키고 싶다. FadeTransition을 시도했지만 매개 변수로 Node 만 사용합니다.몇 초 후 JavaFX의 페이드 아웃 커서

또한 스레드를 사용해 보았습니다.

Platform.runLater(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
      try 
      { 
       Thread.sleep(2000); 
       scene.setCursor(Cursor.NONE); 
      } 
      catch (InterruptedException e) 
      { 
       e.printStackTrace(); 
      } 

     } 
    }); 

여기 2 초 후에 커서를 숨기고 싶었습니다. 그것은 작동하지만, 또한 기대하지 않는 2 초 동안 내 응용 프로그램을 걸어.

2 초 후에 커서를 페이드 아웃 할 수 있습니다.

+1

불투명도에 대해 다른 불투명도를 가진 동일한 커서의 10 가지 아이콘을 만드는 것이 가능할 수 있습니다. 다음과 같이 'ImageCursor'를 사용하여 매우 빠르게 하나에서 다른 것으로 변경합니다. 그 점에 대해 궁금합니다. , 어쩌면 내가하고 코드를 게시 할 수 있습니다. :) – GOXR3PLUS

+1

여기 있습니다 : https://github.com/goxr3plus/JFXCustomCursor – GOXR3PLUS

+0

고마워, 네 프로젝트를 보았다, 정말 근사하다. –

답변

5

FX 응용 프로그램 스레드에서 차단 호출 (Thread.sleep(...))을하고 있기 때문에 코드가 UI를 정지하게 만듭니다. 그런 식으로하고 싶다면 백그라운드 스레드를 차단하고 일시 중지가 완료되면 FX 응용 프로그램 스레드에서 커서 변경을 예약해야합니다.

PauseTransition pause = new PauseTransition(Duration.seconds(2)); 
pause.setOnFinished(e -> scene.setCursor(Cursor.NONE)); 
pause.play(); 
당신은 커서가 사용자가 무언가를 할 때에 다시 나타나게, 2 초 후 다시 사라질뿐만 아니라 이것을 사용할 수 있습니다

:

쉬운 방법은, 그래도 PauseTransition를 사용하는 단지입니다

scene.addEventHandler(MouseEvent.ANY, e -> { 
    scene.setCursor(Cursor.DEFAULT); 
    pause.playFromStart(); 
}); 
+0

감사합니다. 두 번째 부분은 나에게 추가적인 이점을 제공했습니다. 또한 커서를 페이드 아웃하는 것에 대해 도와 줄 수 있습니까? 나는 그것이 서서히 사라지면 좋겠다. –

+0

그렇게 할 방법이 없습니다. 'Cursor'는'opacity' 속성이 없기 때문에'Node'에서'Cursor'를 만드는 방법은 없다고 생각합니다. –

+0

@James_D 이미지를 투명하게 만들기 위해'WritableImage'와 함께'PixelWriter'를 사용하고 있습니다. 대신에 검은 사각형을 얻습니다. 왜 그런가요? WritableImage는 투명을 지원하지 않습니다? – GOXR3PLUS

관련 문제