Strikethrough for Label,使用查找获取Label的Text子节点

时间:2016-03-22 15:26:26

标签: css javafx

我在VBox中有多个相同的Task对象,我试图用删除线格式化某些任务的Label文本。据我所知,这只能在Label的文本子节点上完成。

下面的代码返回一个空指针:

label.lookup(".text");

然而,我可以用CSS中的这一行来实现删除线的格式化:

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

有没有办法使用内联代码方法实现删除线效果?还是有使用CSS的解决方法?感谢。

1 个答案:

答案 0 :(得分:0)

我的实现问题是我对使用所有Task对象的通用CSS样式表感到困惑。最简单的解决方案是访问Label中的文本子节点,如上所示,并根据是否需要样式为每个任务创建多个样式表:

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

非常感谢James_D帮我解决了这样一个业余问题,哈哈