JavaFX:从ProgressIndicator中删除百分比

JavaFX:从ProgressIndicator中删除百分比,java,css,javafx,javafx-8,Java,Css,Javafx,Javafx 8,我一直试图删除ProgressIndicator下面的百分比文本,但没有成功。我发现有几处提到这一点,并尝试了公认的答案,但它不起作用 使用Java8更新121 package com.company.mytest; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.ProgressInd

我一直试图删除ProgressIndicator下面的百分比文本,但没有成功。我发现有几处提到这一点,并尝试了公认的答案,但它不起作用

使用Java8更新121

package com.company.mytest;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class ProgressApp extends Application {

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

    /* (non-Javadoc)
     * @see javafx.application.Application#start(javafx.stage.Stage)
     */
    @Override
    public void start(Stage stage) throws Exception {
        ProgressIndicator progress = new ProgressIndicator();
        progress.setProgress(0.5f);

        StackPane root = new StackPane();
        root.getChildren().add(progress);

        Scene scene = new Scene(root);

        scene.getStylesheets()
        .add(getClass().getResource("progress.css").toExternalForm());

        stage.setScene(scene);
        stage.setWidth(300);
        stage.setHeight(300);
        stage.setTitle("JavaFX 8 app");
        stage.show();
    }

}
我知道CSS已加载,因为我可以更改字体大小的百分比。这是progress.CSS文件的CSS内容

.progress-indicator .percentage {
    visibility: hidden;
}

-fx fill
属性设置为
null
似乎可以解决问题:

.progress-indicator .percentage {
   -fx-fill:null;
}

更新:

仅设置此属性将隐藏百分比文本,但仍会占用空间。

一种可能的解决方法是设置
ProgressIndicator
-fx padding
属性:

.progress-indicator .percentage {
    -fx-fill:null;
}

.progress-indicator  {
    -fx-padding: 0 0 -16 0;
}
唯一的问题是硬编码的值:如果
.progress indicator.percentage
的CSS发生了更改(例如,字体更大),则还必须对其进行调整



或者,在这个答案中有一个编程解决方案:

是的,但它仍然占用空间。即使将字体大小设置得很小,百分比也会占用更多的空间。是的,你是对的。请检查更新后的答案。设置填充就可以了。但是,为底部填充设置硬编码负值并不理想。如果在性能上没有任何额外开销,那么使用programatic解决方案可能是更好的选择。