w3resource

JavaFX Download manager with ProgressBar

JavaFx User Interface Components: Exercise-18 with Solution

Write a JavaFX program to build a download manager application with a ProgressBar to show download progress. When a download is in progress, update the ProgressBar accordingly.

Sample Solution:

JavaFx Code:

//Main.java

import javafx.application.Application;
import javafx.concurrent.Task;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Download Manager");

        ProgressBar progressBar = new ProgressBar(0);
        Button startButton = new Button("Start Download");

        startButton.setOnAction(event -> {
            // Simulate a download task.
            Task<Void> downloadTask = createDownloadTask(progressBar);
            Thread downloadThread = new Thread(downloadTask);
            downloadThread.start();
        });

        VBox root = new VBox(10);
        root.getChildren().addAll(progressBar, startButton);

        Scene scene = new Scene(root, 300, 100);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private Task<Void> createDownloadTask(ProgressBar progressBar) {
        Task<Void> downloadTask = new Task<Void>() {
            @Override
            protected Void call() {
                for (int i = 0; i <= 100; i++) {
                    updateProgress(i, 100);
                    try {
                        Thread.sleep(100); // Simulate download delay.
                    } catch (InterruptedException e) {
                        // Handle interruption.
                        break;
                    }
                }
                return null;
            }
        };

        progressBar.progressProperty().bind(downloadTask.progressProperty());

        return downloadTask;
    }
}

In the exercise above, when we click the "Start Download" button, it starts a simulated download task. The 'ProgressBar' updates to show progress. This is a simplified representation of a download manager. In a real download manager, you replace the simulated download with actual file downloads using libraries and handle network-related tasks properly.

Note: Remember that real download managers require robust error handling, support for multiple downloads, user authentication, and more features, which are beyond the scope of a simple example.

Sample Output:

JavaFx: JavaFX Download manager with ProgressBar.
JavaFx: JavaFX Download manager with ProgressBar.

Flowchart:

Flowchart: JavaFX Download manager with ProgressBar.
Flowchart: JavaFX Download manager with ProgressBar.

Java Code Editor:

Previous: JavaFX Media player interface with progress slider.
Next: JavaFX TextArea to ListView example.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.