我在VBox中有多个相同的Task对象,我试图用删除线格式化某些任务的Label文本。据我所知,这只能在Label的文本子节点上完成。
下面的代码返回一个空指针:
label.lookup(".text");
然而,我可以用CSS中的这一行来实现删除线的格式化:
#label .text {
-fx-strikethrough: true;
}
有没有办法使用内联代码方法实现删除线效果?还是有使用CSS的解决方法?感谢。
答案 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帮我解决了这样一个业余问题,哈哈