Rishabh Sharma
Rishabh Sharma

Reputation: 67

javafx: Progress bar to show the progress of the process?

I want to show progress bar while a functionality is running. What is the best way to show it? Basically I am building a program to send multiple mails on a single click. While sending the mail I want to show progress bar while sending the mails.

Upvotes: 1

Views: 8440

Answers (3)

Developer66
Developer66

Reputation: 750

The best solution in this case is using a Task.

Example:

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();

Hope this helps you.

P.S.: The code in the task run as a Thread...

Upvotes: 10

Ala Eddine Menai
Ala Eddine Menai

Reputation: 2870

I implemented what you want last time ,If you want to show progressIndicator or progressBar when sending is running ,try this part of code

 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();

Upvotes: 1

Marcelo Li Koga
Marcelo Li Koga

Reputation: 496

Just use javafx.scene.control.ProgressBar

Documentation: http://docs.oracle.com/javafx/2/ui_controls/progress.htm

Upvotes: 0

Related Questions