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的回答很有用,因为它让我指出了正确的方向,所以我试图将这个事实编辑到他的回答中。但我的编辑被拒绝了,因为它偏离了原始意图答案。)
这几乎与 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
:
.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的回答很有用,因为它让我指出了正确的方向,所以我试图将这个事实编辑到他的回答中。但我的编辑被拒绝了,因为它偏离了原始意图答案。)