2016-05-10 17 views
0

私は、タスクを読み込むための進捗インジケータを表示するために、以下のコードを使用しています。ControlsFXの進行インジケータからMaskerPaneを使用しています。 しかし、コンポーネントを使用しているときに、maskerpaneは1回しか表示されません。進捗インジケーターを表示するためのより良い方法を提案してください。javafxアプリケーションの進捗インジケータ

@FXML 
    private MaskerPane progressPane; 
@FXML 
     private void addMemberSelect() { 
      Task task = new Task<Void>() { 
       @Override 
       protected Void call() throws Exception { 
        progressPane.setVisible(true); 
        return null; 
       } 
       @Override 
       protected void succeeded(){ 
        super.succeeded(); 
        content.setContent(null); 
        ScreensController colllectScreenController = new ScreensController(); 
        colllectScreenController.loadScreen(Screens.ADD_MEMBER); 
        colllectScreenController.setScreen(Screens.ADD_MEMBER); 
        content.setContent(colllectScreenController); 
        progressPane.setVisible(false); 
       } 
      }; 
      new Thread(task).start(); 
     } 
+0

あなたの質問はあまり明確ではありません。あなたはMaskPaneから何を達成したいですか?何が効いていないのですか? "maskerpaneは1回だけ表示されます"という意味はどうですか? – ItachiUchiha

+0

私の英語で申し訳ありません。実際にはシーンを切り替える際に進捗状況を表示したいと思います。各シーンにはいくつかのDB操作が含まれていますので、進捗インジケータを表示したいと思います。上記のコードは進捗状況が です。進行状況バーを表示します – boycod3

+0

[updateProgress()](https://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html#updateProgress-double)を使用して進行状況を更新することはできません-double-)をタスクに追加します。これを使用しないと、進行状況インジケータに進行状況が表示されません。 [Task](https://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html)用にjavadocで使用する方法の例がいくつかあります。 – ItachiUchiha

答えて

0

この例は役に立ちます。

public class MaskerPaneTest extends Application { 
@Override 
public void start(Stage primaryStage) throws Exception { 

    MaskerPane progressPane = new MaskerPane(); 
    progressPane.setVisible(false); 

    Button button = new Button("Show"); 
    button.setOnAction(event -> { 

      Task task = new Task<Void>() { 
       @Override 
       protected Void call() throws Exception { 
        progressPane.setVisible(true); 
        Thread.sleep(2000); 
        return null; 
       } 
       @Override 
       protected void succeeded(){ 
        super.succeeded(); 
        progressPane.setVisible(false); 
       } 
      }; 
      new Thread(task).start(); 
     }); 
    VBox box = new VBox(button, progressPane); 
    box.setAlignment(Pos.CENTER); 
    Scene scene = new Scene(box, 200, 200); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

} 出典:https://gist.github.com/TheItachiUchiha/13f8cc637872ebac4385f92cd16075a7

私はそれをテストし、あなたがそれを適応させることができますので、それは、うまく動作します。

関連する問題