如何在JavaFX中获得一个小ProgressBar

如何在JavaFX中获得一个小ProgressBar,javafx,javafx-8,Javafx,Javafx 8,我试图得到一个像iTunes一样的进度条,它非常小(高度约为5px),但我似乎不能低于19或20px 我尝试设置-fx max height,但没有效果,也在周围的窗格中。请注意,这个值确实改变了高度-我只是不能得到小于20px的值 有什么办法可以做到这一点吗?我希望避免使用一个简单的矩形来表示进度,因为失去了语义和辅助技术的支持 谢谢。进度条的默认样式是您无法降低其高度的原因 正如我们在进度条css选择器的modena.css文件中所看到的: .progress-bar > .bar {

我试图得到一个像iTunes一样的进度条,它非常小(高度约为5px),但我似乎不能低于19或20px

我尝试设置-fx max height,但没有效果,也在周围的窗格中。请注意,这个值确实改变了高度-我只是不能得到小于20px的值

有什么办法可以做到这一点吗?我希望避免使用一个简单的矩形来表示进度,因为失去了语义和辅助技术的支持


谢谢。

进度条的默认样式是您无法降低其高度的原因

正如我们在
进度条
css选择器的
modena.css
文件中所看到的:

.progress-bar > .bar {
    -fx-background-color: linear-gradient(to bottom, derive(-fx-accent, -7%), derive(-fx-accent, 0%), derive(-fx-accent, -3%), derive(-fx-accent, -9%) );
    -fx-background-insets: 3 3 4 3;
    /*-fx-background-radius: 0.583em; *//* 7 */
    -fx-background-radius: 2;
    -fx-padding: 0.75em;
}
两个CSS属性负责此操作:
-fx padding
用于蓝色内部条的高度,而
-fx background insets
用于周围灰色条的高度

因此,您可以根据需要自定义此选择器。例如,使用这些属性,您将拥有5个像素的高度:

.progress-bar > .bar {
    -fx-background-insets: 1 1 2 1;
    -fx-padding: 0.20em;
}
无需在代码中设置高度:

@Override
public void start(Stage primaryStage) {

    ProgressBar pb = new ProgressBar(0.4);
    pb.setPrefWidth(200);
    StackPane root = new StackPane(pb);

    Scene scene = new Scene(root, 300, 200);
    scene.getStylesheets().add(getClass().getResource("root.css").toExternalForm());
    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
}

这个问题是的重复,但是José给出了一个非常好的答案,我真的不想将其标记为这样,并且将更新另一个答案以引用此:-)感谢您指出进度条wiki。它真的很整洁!感谢@jewelsea的好意评论,并用我的答案更新了wiki的答案:)谢谢你的详细回答!:)像这样精心设计的答案真的不需要太多,而且你永远不知道,它们可以被标记为其他人的参考:)