JavaFX:如何从 ProgressIndicator 中删除边框?

JavaFX: How to remove border from ProgressIndicator?

这几乎与 this 相同的问题,只有一点点不同。我也开始在我的 ProgressIndicator 控件周围看到以 Java 8u45 开头的边框,但是当我 select 'user agent' 时,我只看到它们 样式表到里海。它看起来很糟糕,但我对 Caspian 样式表投入了大量精力,现在不愿意更改它。这是一些演示问题的代码。显然,你必须取消注释才能看到问题。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.control.ProgressIndicator;
import javafx.stage.Stage;
import javafx.geometry.Insets;

public class ProgressIndicatorWithBorder extends Application {

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

    @Override
    public void start(Stage primaryStage) {
        // this.setUserAgentStylesheet(Application.STYLESHEET_CASPIAN);
        ProgressIndicator pi = new ProgressIndicator();
        BorderPane borderPane = new BorderPane();
        borderPane.setCenter(pi);
        borderPane.setMargin(pi, new Insets(12));
        Scene scene = new Scene(borderPane, 640, 480);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}

假设

正如提问者没有提到的,ProgressIndicator 有两种使用方式:

  • 不确定(运行 无穷无尽)
  • 确定(从 0 到 100 计算百分比)

问题

问题仅与 inderminate 状态 有关,因为微调器的 ProgressIndicator 样式似乎与 Datepicker 样式冲突这是微调器。因此,JavaFX 开发人员选择制作 Bugfix in Java 8u40。这是针对 modena.css 完成的,因为它是 JavaFX 的默认值 CSS。

但在您的情况下,您想使用旧样式 caspian.css。所以你必须以同样的方式去做,就像他们所做的那样 here.

Kevin Rushforth(JavaFX 人员之一)制作了两张该行为的屏幕截图:

ProgressIndicator-坏

ProgressIndicator-良好

解决方案

制作自己的样式表文件。我叫我的 pibug.css。将它设置在 ProgressIndicator 上作为它的样式表。这不会覆盖已经在 caspian.css.

中设置的 other 默认值

pibug.css

.progress-indicator:indeterminate > .spinner {        
    -fx-background-color: transparent;
    -fx-background-insets: 0;
    -fx-background-radius: 0;
}

但这还不是全部,如果你想让你的Datepicker和caspian.css一起工作得很好,你需要在你的Datepicker上设置如下样式:

dpbug.css

.date-picker-popup > * > .spinner {
    -fx-spacing: 0.25em; /* 3 */
    -fx-alignment: CENTER;
    -fx-fill-height: false;
    -fx-background-color: transparent; /* this line was added */
}

我们必须从 modena.css:

复制 this 部分
.progress-indicator:indeterminate > .spinner {
    /** Applying to undo styling from .spinner, reported in RT-37965 */
    -fx-background-color: transparent;
    -fx-background-insets: 0;
    -fx-background-radius: 0;
}

不需要修改

(注意:NwDX的回答很有用,因为它让我指出了正确的方向,所以我试图将这个事实编辑到他的回答中。但我的编辑被拒绝了,因为它偏离了原始意图答案。)