2016-03-22 46 views
0

我在VBox中有多個相同的任務對象,我嘗試用刪除線格式化某些任務的標籤的文本。據我所知,這隻能在標籤的文本子節點上完成。標籤的刪除線,使用查找獲取標籤的文本子節點

下面的代碼返回我一個空指針:

label.lookup(".text"); 

不過,我可以實現我的刪除線的格式與該行CSS:

#label .text { 
    -fx-strikethrough: true; 
} 

有沒有辦法實現使用內聯代碼方法的刪除線效果?還是有任何使用CSS的解決方法?謝謝。

+0

什麼是錯誤的CSS方法? –

+0

我打算使用此標籤創建多個對象,但僅將其中一些設置爲刪除線。使用CSS爲所有對象的標籤應用刪除線。 – kangsoon93

+0

所以,只需添加一個樣式類到你想要刪除刪除線的標籤....如果你[編輯]你的問題來更全面地描述你想要達到的目標,那麼給你一個完整的答案可能會更容易。 (查找應該也能工作,但查找不是很健壯,你沒有提供任何關於你什麼時候的情況。) –

回答

0

與我的實現問題是,我注意到所有的任務對象使用通用的CSS樣式表。最簡單的解決方法是根據是否需要樣式或不訪問文本子節點的標籤,如上圖所示,並創建多個樣式表爲每個任務:

if(isStrikethrough) { 
    label.getStylesheets.addAll(getClass().getResource("Strikethrough.css").toExternalForm()); 
} else { 
    label.getStylesheets.addAll(getClass().getResource("NoStrikethrough.css").toExternalForm()); 
} 

非常感謝James_D幫助我這樣的一個業餘愛好者的問題,哈哈

+0

對標籤使用不同的樣式類可能更容易,但是可以使用單個樣式表。你也可以考慮一個[CSS'PseudoClass'](http://docs.oracle.com/javase/8/javafx/api/javafx/css/PseudoClass.html)。 [這裏](https://gist.github.com/james-d/846eb9ff72bd66fdd955)是一個使用僞類的例子。 –

+0

哇,不知道這是可能的。感謝這個偉大的例子! – kangsoon93