JavaFX 为 ProgressIndicator 和 Spinner 设置不同的样式
JavaFX set diffenrent styles to ProgressIndicator and Spinner
目前我正在使用进度指示器和一堆微调器。
我想在一个 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;
}
问题是,我所有的微调器现在都有红色背景。我可以通过使用 diffenrent CSS-Files 来做到这一点。但如果我只需要一个 CSS-File.
就更好了
提前感谢您的宝贵时间和帮助!
我认为您可以为每个人创建样式 class?
您不能为每个微调器添加自定义样式 class 并使用 spinner.getStyleClass().add("my-style") 应用它吗?
这将允许您在比对象级别更具体的级别定义可能 classes。
您在 modena.css
中遇到了 this bug,这是在 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;
}
目前我正在使用进度指示器和一堆微调器。
我想在一个 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;
}
问题是,我所有的微调器现在都有红色背景。我可以通过使用 diffenrent CSS-Files 来做到这一点。但如果我只需要一个 CSS-File.
就更好了提前感谢您的宝贵时间和帮助!
我认为您可以为每个人创建样式 class?
您不能为每个微调器添加自定义样式 class 并使用 spinner.getStyleClass().add("my-style") 应用它吗?
这将允许您在比对象级别更具体的级别定义可能 classes。
您在 modena.css
中遇到了 this bug,这是在 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;
}