我想使用CSS来删除文字。
我使用标签:
button.setStyle("-fx-strikethrough: true;");
但是这段代码正常,请帮忙。
答案 0 :(得分:5)
您需要使用CSS样式表在按钮上启用删除线。使用CSS样式表通常比使用内联CSS setStyle命令更可取。
/** file: strikethrough.css (place in same directory as Strikeout) */
.button .text {
-fx-strikethrough: true;
}
CSS样式表使用CSS选择器选择按钮内的文本并对其应用删除线样式。目前(从Java 8开始),setStyle命令不能使用CSS选择器,因此必须使用CSS样式表来实现此功能(或使用内联查找,这是不可取的) - 样式表无论如何都是最佳解决方案。 p>
请参阅@ icza的答案,了解为什么尝试直接在按钮上设置-fx-strikethrough
样式不起作用。
以下是一个示例应用程序:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Strikeout extends Application {
@Override
public void start(Stage stage) throws Exception {
Button strikethrough = new Button("Strikethrough");
strikethrough.getStylesheets().addAll(getClass().getResource(
"strikethrough.css"
).toExternalForm());
StackPane layout = new StackPane(
strikethrough
);
layout.setPadding(new Insets(10));
stage.setScene(new Scene(layout));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
答案 1 :(得分:4)
Button
不支持-fx-strikethrough
CSS属性,因此设置此属性无效。
以下是官方JavaFX 8 CSS参考:JavaFX CSS Reference Guide
为-fx-strikethrough
节点定义了Text
。
Button
仅支持以下内容:cancel
,default
,以及从Labeled
继承的所有内容:
-fx-alignment, -fx-text-alignment, -fx-text-overrun, -fx-wrap-text, -fx-font,
-fx-underline, -fx-graphic, -fx-content-display, -fx-graphic-text-gap,
-fx-label-padding, -fx-text-fill, -fx-ellipsis-string
Labeled
继承了Control
:-fx-skin
,-fx-focus-traversable
。
所以看看支持的属性,下面的工作(当然它不是删除线):
button.setStyle("-fx-underline: true");