Просто используйте внешний файл CSS и установить фоновое изображение на панели. Сам бар представлен Region
со стилем класса bar
(см docs), так что вам просто нужно что-то вроде
.progress-bar > .bar {
-fx-background-image: url("http://upload.wikimedia.org/wikipedia/commons/c/ce/Train_icon_small.png");
-fx-background-position: right ;
-fx-background-color: transparent ;
-fx-background-repeat: repeat-x ;
}
Полный пример:
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 TrainProgressBar extends Application {
@Override
public void start(Stage primaryStage) {
ProgressBar progressBar = new ProgressBar();
progressBar.setProgress(0);
Button startButton = new Button("Start");
startButton.setOnAction(e -> {
startButton.setDisable(true);
Task<Void> task = new Task<Void>() {
@Override
public Void call() throws Exception {
for (int i = 0; i < 100; i++) {
Thread.sleep(20);
updateProgress(i, 100);
}
updateProgress(100, 100);
return null ;
}
};
progressBar.progressProperty().bind(task.progressProperty());
task.setOnSucceeded(evt -> startButton.setDisable(false));
new Thread(task){{setDaemon(true);}}.start();
});
VBox root = new VBox(15, progressBar, startButton);
Scene scene = new Scene(root, 250, 100);
scene.getStylesheets().add("train-progress-bar.css");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
с поездом-ПРОГРЕСС-bar.css:
.root {
-fx-padding: 10 ;
-fx-alignment: center ;
}
.progress-bar > .bar {
-fx-background-image: url(http://upload.wikimedia.org/wikipedia/commons/c/ce/Train_icon_small.png);
-fx-background-position: right ;
-fx-background-color: transparent ;
-fx-background-repeat: repeat-x ;
}
Как это может быть закрыт, как «неясно, что вы просите», когда я аль готовый ответил на это четырьмя строками кода? Хотя английский, очевидно, не является первым языком OP, то, что он задает, совершенно ясно. Я отмечаю, что ни один из тех, кто голосовал за закрытие, не имеет отдельного сообщения в вопросе с тегом JavaFX. Голосование для повторного открытия. –
После того, как редактировался James_D, этот вопрос не более неясен и заслуживает обращения вспять вниз. –