2016-05-11 95 views
0

我正在製作一個應用程序,我們希望在登錄後在一段特定時間段內使用多線程來顯示閃爍的標籤「加載」,然後繼續進入下一頁。這是我目前的進度:JavaFX多線程問題

public class LoadingController implements Initializable { 

@FXML 
private Label loadingLabel; 

boolean ready = false; 

public void setReady() { 
    System.out.println("now I'm ready"); 
    ready = true; 
} 

public void showLabel() { 
    this.loadingLabel.setVisible(true); 
} 

public void hideLabel() { 
    this.loadingLabel.setVisible(false); 
} 

public void goToPage2() { 
    try { 
     Parent root = FXMLLoader.load(getClass().getResource("Page2.fxml")); 
     Scene scene = new Scene(root); 
     Stage stage = Assignment.getStage(); 
     stage.setScene(scene); 
    } catch (IOException ex) { 
     Logger.getLogger(LoadingController.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

/** 
* Initializes the controller class. 
*/ 
@Override 
public void initialize(URL url, ResourceBundle rb) { 
    System.out.println("In loading page"); 
    // TODO launch thread 
    Thread2 thread = new Thread2(this); 
    thread.start(); 


} 

}

public class Thread2 extends Thread { 

private LoadingController con; 

public Thread2(LoadingController con) { 
    this.con = con; 
} 

public void run() { 
    System.out.println("Hello from a thread!"); 
    try { 
     for (int i = 0; i < 20; i++) { 
      con.hideLabel(); 
      Thread.sleep(100); 
      con.showLabel(); 
      Thread.sleep(100); 

     } 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 

    } 

    con.setReady(); 

} 

}

我目前得到這個錯誤涉及到線 一幕一幕=新場景(根);

線程「線程-6」中的異常java.lang.IllegalStateException:不在FX應用程序線程中。

任何人都可以在這個問題上提供一些指導嗎? 謝謝

回答