실행자가 UI 스레드를 차단하기 시작하기 전에 노드를 숨기려면 어떻게해야합니까?

다니엘 H.

사용자가 UI에서 버튼을 클릭 할 때 버튼을 숨기고 여러 작업을 수행하는 백그라운드 작업을 시작하고 싶습니다.

편집 : 다른 차단 작업이 시작되기 전에 버튼이 숨겨져 있는지 어떻게 확인합니까?

class startTask implements Callable<Void>{
    @Override
    public Void call() {
        //.....Do a bunch of stuff.....
        return null;
    }
}

 public void hitTheButton() throws ExecutionException, InterruptedException {
    hideTheButton();
    //this only happens first IF i remove the .get()

    StartTask startTask = new StartTask();
    ExecutorService ex = Executors.newSingleThreadExecutor();
    Future<?> exFuture = ex.submit(startSyncTask);
    exFuture.get();
    //.... Now we can continue with the program....        
}

public void hideThebutton(){
    FadeTransition ft = new FadeTransition(Duration.millis(10), myButton);
    ft.setFromValue(1);
    ft.setToValue(0);
    ft.setCycleCount(1);
    ft.setAutoReverse(false);
}

나는 또한 .isDone()쓸모없는 while 루프를 넣어 보았습니다 .

UI가 .get ()에 의해 차단된다는 것을 이해하지만 Executor를 인스턴스화하기 전에 hide 메서드가 완료되지 않는 이유는 무엇입니까?

M. 르 루테

당신은 다음과 같이 썼습니다.

UI가 .get ()에 의해 차단된다는 것을 이해하지만 Executor를 인스턴스화하기 전에 hide 메서드가 완료되지 않는 이유는 무엇입니까?

JavaFX UI는 호출하는 코드 "사이"에서 업데이트됩니다. 실제로 수행하는 작업은 전환의 일부인 숨기기, 활성화와 같은 변경을 실행하도록 JavaFX 런타임에 요청하는 것입니다. 런타임은 해당 노드에서 작업을 수행해야 함을 표시하지만 다음 UI 틱이 실행될 때까지 대기합니다.

당신 exFuture.get();을 사용하면 다음 UI 틱이 실행되지 않으므로 사용자 인터페이스가 업데이트되지 않습니다. 동시성 프레임 워크 를 사용하는 경우 Task다양한 상태 모멘트를 생성 하고 사용하여 버튼 노드를 조작 할 수 있습니다.

Button button;
Task<?> task;
task.setOnSucceeded(e -> showButton(button));
task.setOnFailed(e -> showButton(button));
hideButton(button);
executor.submit(task);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

스레드 실행을 차단하지 않고 Qt에서 스레드가 완료 될 때까지 기다리려면 어떻게해야합니까?

분류에서Dev

실행 가능한 .jar에서 리소스 이미지를 숨기려면 어떻게해야합니까?

분류에서Dev

Servicestack 메타 데이터에서 Swagger UI 엔드 포인트를 숨기려면 어떻게해야합니까?

분류에서Dev

NatTable에서 행 / 열 헤더를 숨기려면 어떻게해야합니까?

분류에서Dev

ID를 자동으로 증가시키고 사용자에게 숨기려면 어떻게해야합니까?

분류에서Dev

Windows 앱으로 전송되는 바로 가기 키를 차단하려면 어떻게해야합니까?

분류에서Dev

OpenShift에서 사용자를 내 노드 앱으로 이동하기 전에 정적 페이지를 표시하려면 어떻게해야합니까?

분류에서Dev

CSS를 사용하여 플렉스 열에서 부분 행을 숨기려면 어떻게해야합니까?

분류에서Dev

비디오 스트림의 각 프레임에 함수를 적용하기 위해 병렬 스레드를 실행하려면 어떻게해야합니까?

분류에서Dev

C # 시간 표시기에서 메서드를 실행하려면 어떻게해야합니까?

분류에서Dev

화면이 잠겨 있어도 백그라운드에서 서비스 / 스레드를 주기적으로 실행하려면 어떻게해야합니까?

분류에서Dev

보기에서 추가 크기의 배경보기를 숨기려면 어떻게해야합니까?

분류에서Dev

차트에서 포인트를 숨기려면 어떻게해야합니까?

분류에서Dev

열 값이 단어로 시작하는지 확인하기 위해 SQL Server에 LINQ 쿼리를 실행하려면 어떻게해야합니까?

분류에서Dev

드롭 다운 메뉴에 여러 클래스가있는 div를 표시하거나 숨기려면 어떻게해야합니까?

분류에서Dev

단일 워드 프레스 페이지에 jquery 코드를 추가하려면 어떻게해야합니까?

분류에서Dev

내 매크로를 시트 표시 / 숨기기로 전환하려면 어떻게해야합니까?

분류에서Dev

블레이드 템플릿에서이 코드를 숨기려면 어떻게해야합니까?

분류에서Dev

한 사용자의 콘텐츠를 다른 사용자에게 숨기려면 어떻게해야합니까?

분류에서Dev

jsawk를 노드에 설치하고 Windows에서 shelljs로 실행하려면 어떻게해야합니까?

분류에서Dev

UI 스레드를 차단하지 않고 C ++에서 http 요청을하려면 어떻게해야합니까?

분류에서Dev

Javascript 루프가 다음을 시작하기 전에 기존 반복이 finsih를 기다리도록하려면 어떻게해야합니까?

분류에서Dev

Github diff보기에서 문자 별 차이를 시각화하려면 어떻게해야합니까?

분류에서Dev

작업 수행시 모델 대화 상자를 숨기려면 어떻게해야합니까?

분류에서Dev

Flutter에서 특정 숫자 뒤에 나오는 문자를 숨기려면 어떻게해야합니까?

분류에서Dev

로그인하기 전에 배치 스크립트를 시작하려면 어떻게해야합니까?

분류에서Dev

전체`local_dir` (`~ / ray_results`)를 헤드 노드와 동기화하려면 어떻게해야합니까?

분류에서Dev

.htacces에서 공격자를 차단하려면 어떻게해야합니까?

분류에서Dev

PHP에서 카테고리를 숨기려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    스레드 실행을 차단하지 않고 Qt에서 스레드가 완료 될 때까지 기다리려면 어떻게해야합니까?

  2. 2

    실행 가능한 .jar에서 리소스 이미지를 숨기려면 어떻게해야합니까?

  3. 3

    Servicestack 메타 데이터에서 Swagger UI 엔드 포인트를 숨기려면 어떻게해야합니까?

  4. 4

    NatTable에서 행 / 열 헤더를 숨기려면 어떻게해야합니까?

  5. 5

    ID를 자동으로 증가시키고 사용자에게 숨기려면 어떻게해야합니까?

  6. 6

    Windows 앱으로 전송되는 바로 가기 키를 차단하려면 어떻게해야합니까?

  7. 7

    OpenShift에서 사용자를 내 노드 앱으로 이동하기 전에 정적 페이지를 표시하려면 어떻게해야합니까?

  8. 8

    CSS를 사용하여 플렉스 열에서 부분 행을 숨기려면 어떻게해야합니까?

  9. 9

    비디오 스트림의 각 프레임에 함수를 적용하기 위해 병렬 스레드를 실행하려면 어떻게해야합니까?

  10. 10

    C # 시간 표시기에서 메서드를 실행하려면 어떻게해야합니까?

  11. 11

    화면이 잠겨 있어도 백그라운드에서 서비스 / 스레드를 주기적으로 실행하려면 어떻게해야합니까?

  12. 12

    보기에서 추가 크기의 배경보기를 숨기려면 어떻게해야합니까?

  13. 13

    차트에서 포인트를 숨기려면 어떻게해야합니까?

  14. 14

    열 값이 단어로 시작하는지 확인하기 위해 SQL Server에 LINQ 쿼리를 실행하려면 어떻게해야합니까?

  15. 15

    드롭 다운 메뉴에 여러 클래스가있는 div를 표시하거나 숨기려면 어떻게해야합니까?

  16. 16

    단일 워드 프레스 페이지에 jquery 코드를 추가하려면 어떻게해야합니까?

  17. 17

    내 매크로를 시트 표시 / 숨기기로 전환하려면 어떻게해야합니까?

  18. 18

    블레이드 템플릿에서이 코드를 숨기려면 어떻게해야합니까?

  19. 19

    한 사용자의 콘텐츠를 다른 사용자에게 숨기려면 어떻게해야합니까?

  20. 20

    jsawk를 노드에 설치하고 Windows에서 shelljs로 실행하려면 어떻게해야합니까?

  21. 21

    UI 스레드를 차단하지 않고 C ++에서 http 요청을하려면 어떻게해야합니까?

  22. 22

    Javascript 루프가 다음을 시작하기 전에 기존 반복이 finsih를 기다리도록하려면 어떻게해야합니까?

  23. 23

    Github diff보기에서 문자 별 차이를 시각화하려면 어떻게해야합니까?

  24. 24

    작업 수행시 모델 대화 상자를 숨기려면 어떻게해야합니까?

  25. 25

    Flutter에서 특정 숫자 뒤에 나오는 문자를 숨기려면 어떻게해야합니까?

  26. 26

    로그인하기 전에 배치 스크립트를 시작하려면 어떻게해야합니까?

  27. 27

    전체`local_dir` (`~ / ray_results`)를 헤드 노드와 동기화하려면 어떻게해야합니까?

  28. 28

    .htacces에서 공격자를 차단하려면 어떻게해야합니까?

  29. 29

    PHP에서 카테고리를 숨기려면 어떻게해야합니까?

뜨겁다태그

보관