1

目前我正在使用进度指示器和一堆微调器。

我想在一个 CSS 文件中赋予它们不同的样式。我的问题是,进度指示器总是使用我为微调器计划的样式。

我做了一个小应用程序作为例子:

package application;

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


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            Pane root = new Pane();
            Scene scene = new Scene(root,400,400);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());

            ProgressIndicator value = new ProgressIndicator(-1.0);
            value.getStyleClass().forEach(clazz -> System.out.println(clazz));
            value.setPrefHeight(100);
            value.setPrefWidth(100.0);

            root.getChildren().add(value);



            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

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

我想让我的 Progress-Indicator 为红色背景并尝试这样做:

.progress-indicator > .indicator {
    -fx-background-color: red;
}

但如果不设置微调器的样式,它将无法工作。所以我附加这个:

.spinner {
    -fx-background-color: red;
}

问题是,我所有的微调器现在都有红色背景。我可以通过使用不同的 CSS 文件来做到这一点。但是如果我只需要一个 CSS 文件会更好。

提前感谢您的时间和帮助!

4

2 回答 2

2

您遇到了这个modena.css在 8u40 中修复的错误。现在您可以安全地更改进度指示器的背景颜色:

.progress-indicator:indeterminate > .spinner {
    /** Applying to undo styling from .spinner, reported in RT-37965 */
    -fx-background-color: red;
    /* originally was */
    /*-fx-background-color: transparent;*/
    -fx-background-insets: 0;
    -fx-background-radius: 0;
}
于 2015-08-24T15:07:50.557 回答
0

我认为您可以为每个单独的班级创建样式?

你不能为每个微调器添加一个自定义样式类并使用 spinner.getStyleClass().add("my-style") 应用它吗?

这将允许您在比对象级别更指定的级别定义可能的类。

于 2015-08-24T14:31:06.990 回答