2014-12-05 24 views
0

JavaFX CSS Guide建議通過CSS設置混合模式爲:的JavaFX - 獲取類轉換異常在CSS的混合模式

-fx-blend-mode: blue 

但在應用下面的CSS串我發現了一個異常的文本節點:

-fx-blend-mode:green; 
-fx-fill:rgba(0.501960813999176,0.4000000059604645,0.800000011920929,1.0); 
-fx-font-size:52; 
-fx-font-style:normal; 
-fx-font-weight:normal 

例外:

Dec 05, 2014 12:54:23 PM javafx.scene.CssStyleHelper calculateValue 
WARNING: Caught 'java.lang.ClassCastException: javafx.scene.paint.Color cannot be 
    cast to java.lang.String' while converting value for '-fx-blend-mode' from 
    inline style on Text[text="Title At Company", x=0.0, y=0.0, alignment=LEFT, 
    origin=BASELINE, boundsType=LOGICAL, font=Font[name=System Regular, family=System, 
    style=Regular, size=13.0], fontSmoothingType=GRAY, fill=0x000000ff] 

是CSS串錯了還是什麼? 我只需要通過CSS應用混合模式。

+0

如何申請css?你能顯示代碼嗎? – Mailkov 2014-12-05 11:19:17

回答

3

如果您嘗試使用其他可能的值設置屬性-fx-blend-mode,它們中的大多數都可以使用。但是這些不是:add,blue,​​和red

有了一些調試,你可以找到這個方法CSSParser.parse()這就是被稱爲解析規則-fx-blend-mode:green;

if (needsLookup || ((value = colorValueOfString(str)) == null)) { 
    value = new ParsedValueImpl<String,String>(str, null, isIdent || needsLookup); 
} 

你可以看到,如果字符串(「綠色」,「紅」,「藍」)相匹配一種顏色,那麼它將被解析爲Color。然後規則將失敗,抱怨,因爲它期望從字符串解析enked BlendMode,而不是從一個顏色。

注意這也發生在add之間,因爲它被轉換爲0xaaddddff。

這裏的解決方法是通過代碼設置它:

text.setBlendMode(BlendMode.GREEN); 

最後,這些值將無法正常工作:src-insrc-out,因爲他們從BlendMode刪除。你不能通過代碼設置它們,但你仍然可以通過CSS選擇它們。你會得到這樣的警告:

Caught java.lang.IllegalArgumentException: No enum constant javafx.scene.effect.BlendMode.src_in' ... 

如果你認爲應該解決這個問題,考慮向Jira提交一個錯誤。

+0

謝謝指出。看來JavaFX CSS有很多錯誤,並且不是通過代碼使用樣式節點的完整替代方案。你能提出解決我的另一個問題與CSS?效果鏈(http://stackoverflow.com/questions/27293885/effect-chaining-css-equivalent-for-effect-setinput-in-javafx/27310236#27310236) – 2014-12-05 11:26:14

+0

您可以通過代碼或FXML鏈式效果。但不是由CSS。你想用這些選項來回答嗎? – 2014-12-05 11:31:39

+1

@Rutaraj JavaFX CSS不應該是通過代碼完成對樣式化節點的替代(儘管它非常靈活,並且您可以在CSS中單獨完成很多樣式)。是的,JavaFX CSS處理確實有一些錯誤,但是(根據我對最新的JavaFX版本的經驗),這些很少遇到。當然,你應該[提交錯誤報告](https://javafx-jira.kenai.com/)瞭解你發現的問題 - 錯誤跟蹤器中的問題比StackOverflow中注意到的問題更有可能得到解決。 – jewelsea 2014-12-05 19:23:01