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

时间:2015-06-23 16:30:11

标签: javafx javafx-8 progress-indicator

这与this几乎相同,但略有不同。我也从Java 8u45开始看到ProgressIndicator控件周围的边框,但是当我选择“用户代理”时,我看到它们只有 。样式表到里海。它看起来很糟糕,但我对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();
    }

}

2 个答案:

答案 0 :(得分:3)

假设

正如提问者未提及的那样,ProgressIndicator可以通过两种方式使用:

  • inderminate(正在无休止地运行)
  • 确定(从0到100计算百分比)

问题

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

但在你的情况下你想使用旧样式caspian.css。因此,您必须以同样的方式执行此操作,因为他们已经完成了here

Kevin Rushforth(JavaFX之一)已经制作了两个截图:

ProgressIndicator-Bad的

ProgressIndicator-Bad.png

ProgressIndicator就绪

ProgressIndicator-Good.png

解决方案

制作自己的样式表文件。我打电话给我的pibug.css。将它设置在ProgressIndicator上作为样式表。这不会覆盖已在caspian.css中设置的其他默认值。

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 */
}

答案 1 :(得分:1)

我们必须从modena.css

复制部分
.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的答案很有用,因为它让我指出了正确的方向,所以我试着将这个事实编辑成他的答案。但我的编辑被拒绝,因为它偏离了原始答案的意图。 )