您是否使用了最新的JDK 8早期訪問?如果是這樣,請參閱我提交的這個錯誤報告:http://javafx-jira.kenai.com/browse/RT-29018
基本上,在最近發佈的早期訪問版本中,他們對皮膚和css做了一些更改。這導致了一個隱藏的bug,其中哪個子節點比父節點髒,但都需要在同一個脈衝中重繪,父級的髒級別最終會覆蓋子節點的髒級別。
這會導致進度不顯示,事實上,對於我而言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
}
我複製你的代碼,它運行得非常完美。不知怎的,我整合了它嗎?我在一個子類中使用它,並且必須以靜態方式訪問進度條。這會造成一些麻煩嗎?我使用7v17 btw – Chromos 2013-03-20 12:18:07
編輯:gui是在fxml表中設計的。 – Chromos 2013-03-20 12:24:32
補丁已經可用了@jewelsea? – 2013-03-21 09:11:55