您使用的是最新的 JDK 8 Early-Access 吗?如果是这样,请参阅我提交的此错误报告:http: //javafx-jira.kenai.com/browse/RT-29018
基本上,在最近发布的抢先体验版本中,他们对皮肤和 css 进行了一些更改。这导致了一个隐藏的错误被揭示,其中子节点比父节点更脏但都需要在相同的脉冲中重新绘制,父节点的脏级别最终会覆盖子节点的脏级别。
这导致进度不显示,事实上,对我来说progressBar
,一旦updateProgress
从任务中调用,它就变得完全不可见。他们有一个补丁,我不知道什么时候会通过。
一种解决方法,要么在等待补丁时使用 jdk7,要么你可以做我所做的并将旧 css 中的它应用到你的 css 样式表中:
/*hack to get progress bar working. From: JDK7u17 jfxrt.jar!/com/sun/javafx/scene/control/skin/caspian/caspian.css */
/*******************************************************************************
* *
* ProgressBar *
* *
******************************************************************************/
.progress-bar {
-fx-skin: "com.sun.javafx.scene.control.skin.ProgressBarSkin";
-fx-background-color:
-fx-box-border,
linear-gradient(to bottom, derive(-fx-color,30%) 5%, derive(-fx-color,-17%));
-fx-background-insets: 0, 1;
-fx-indeterminate-bar-length: 60;
-fx-indeterminate-bar-escape: true;
-fx-indeterminate-bar-flip: true;
-fx-indeterminate-bar-animation-time: 2;
-fx-focus-traversable: true;
}
.progress-bar .bar {
-fx-background-color:
-fx-box-border,
linear-gradient(to bottom, derive(-fx-accent,95%), derive(-fx-accent,10%)),
linear-gradient(to bottom, derive(-fx-accent,38%), -fx-accent);
-fx-background-insets: 0, 1, 2;
-fx-padding: 0.416667em; /* 5 */
}
.progress-bar:indeterminate .bar {
-fx-background-color: linear-gradient(to left, transparent, -fx-accent);
}
.progress-bar .track {
-fx-background-color:
-fx-box-border,
linear-gradient(to bottom, derive(-fx-color,-15%), derive(-fx-color,2.2%) 20%, derive(-fx-color,60%));
-fx-background-insets: 0, 1;
}
.progress-bar:disabled {
-fx-opacity: 1.0
}