2017-08-24 15 views
-1

機能の実行中に進行状況バーを表示したい。それを表示する最善の方法は何ですか?基本的には、ワンクリックで複数のメールを送信するプログラムを構築しています。メールを送信している間、私は進行中のバーを表示してメールを送信します。javafx:プロセスの進行状況を示すプログレスバー?

+0

はあなたがまともな答えをしたい場合は、より多くの情報を提供する必要があります。 – pancho018

+2

ようこそStackOverflowへ。このサイトの[ヘルプページ](https://stackoverflow.com/help)を閲覧するのに時間を費やすことをお勧めします。特に[質問する](https://stackoverflow.com/help/)のページをご覧ください。尋ねる)。このフォーラムは、*特定のプログラミングに関する質問*への回答を提供するように設計されており、通常、最良の質問には[MCVE]形式のコードが含まれています。ここに投稿する前に質問を調査し、問題解決の試みを示す例を作成する必要があります。あなたの現在の質問は実際には必須のステートメントなので、このフォーラムでは話題にはなりません。 –

+0

@ Rishabh-Sharma私の答えはあなたのために働くのですか? https://stackoverflow.com/a/45867364/8087490。それがうまくいく場合は、私の答えを正しいものとして受け入れることができます。 – Developer66

答えて

1

この場合の最適な解決策はTaskです。

例:

Task<Parent> yourTaskName = new Task<Parent>() { 
    @Override 
    public Parent call() { 
     // DO YOUR WORK 

     //method to set progress 
     updateProgress(workDone, max); 

     //method to set labeltext 
     updateMessage(message); 
    } 
}; 

//ProgressBar 
ProgressBar pBar = new ProgressBar(); 
//Load Value from Task 
pBar.progressProperty().bind(yourTaskName.progressProperty()); 
//New Loading Label 
Label statusLabel = new Label(); 
//Get Text 
statusLabel.setText("Loading..."); 
//Layout 
VBox root = new VBox(statusLabel, pBar); 
//SetFill Width TRUE 
root.setFillWidth(true); 
//Center Items 
root.setAlignment(Pos.CENTER); 

//SetOnSucceeded methode 
yourTaskName.setOnSucceeded(new EventHandler<WorkerStateEvent>() { 
     @Override 
     public void handle(WorkerStateEvent event) { 
      System.out.println("Finish"); 
     } 
}); 

//Start Thread 
Thread loadingThread = new Thread(yourTaskName); 
loadingThread.start(); 

希望これはあなたを助けます。

P.S:Threadとして実行するタスクのコード...

0

ちょうど使用javafx.scene.control.ProgressBar

ドキュメント:私はあなたが実行されている送信する際に、コードのこの部分を試しprogressIndicatorやプログレスバーを表示したい場合は、最後の時間が欲しいものを実装し http://docs.oracle.com/javafx/2/ui_controls/progress.htm

+3

少なくとも、*現在のドキュメントへのリンクを提供してください:http://docs.oracle.com/javase/8/javafx/user-interface-tutorial/progress.htm# CHDDJAJE –

0

senderThreadlive = new Thread(new Runnable() { 
       @Override 
       public void run() { 
        try { 
         Platform.runLater(new Runnable() { 
          @Override 
          public void run() { 
           ProgressIndicator WaitingSend=new ProgressIndicator(); 
           WaitingSend.setProgress(ProgressIndicator.INDETERMINATE_PROGRESS); 
           WaitingBox.getChildren().add(WaitingSend);//this is an HBOX 
           SendMailButton.setDisable(true); 
           SendMailButton.setText("sending in progress"); 

           } 
         }); 
         //call Your method of sending 
SimpleMail.EmailSender.sendEmail(MailSenderTxt.getText(), MotMailTxt.getText(), DestMailTxt.getText(), ObjetMailTxt.getText(), org.jsoup.Jsoup.parse(ContentMail.getHtmlText()).text()); 

         Platform.runLater(new Runnable() { 
          @Override 
          public void run() { 
           WaitingSend.setProgress(0); 
           WaitingSend.setVisible(false); 
           SendMailButton.setDisable(false); 
           SendMailButton.setText("Send");          
          } 
         }); 

        } catch (AuthenticationFailedException e) { 

         Platform.runLater(new Runnable() { 
          @Override 
          public void run() { 
           //Your popUp here 
          } 
         }); 

        } catch (SendFailedException e) { 

         Platform.runLater(new Runnable() { 
          @Override 

          public void run() { 
           //Your popUp here 
          } 
         }); 

        } catch (MessagingException e) { 

         Platform.runLater(new Runnable() { 
          @Override 
          public void run() { 
          //Your popUp here 

          } 
         }); 

        } catch (Exception ex) { 

         Platform.runLater(new Runnable() { 
          @Override 
          public void run() { 
            //Your popUp here 

          } 
         }); 

        } 
       } 
      }); 
      senderThreadlive.start(); 
+0

コードは非常に扱いにくいです...もっと簡単な方法があります – Developer66

関連する問題