不工作的ccs样式javafx-fx删除线

不工作的ccs样式javafx-fx删除线,java,css,javafx,Java,Css,Javafx,我想让文本删除使用CSS 我使用标签: button.setStyle("-fx-strikethrough: true;"); 但是此代码正在运行,请提供帮助。不支持-fx删除线CSS属性,因此设置此属性无效 以下是正式的JavaFX8 CSS参考: -fx删除线是为文本节点定义的 按钮仅支持以下功能:取消,默认,以及从标记为的继承的所有功能: -fx-alignment, -fx-text-alignment, -fx-text-overrun, -fx-wrap-text, -fx-fo

我想让文本删除使用CSS

我使用标签:

button.setStyle("-fx-strikethrough: true;");
但是此代码正在运行,请提供帮助。

不支持
-fx删除线
CSS属性,因此设置此属性无效

以下是正式的JavaFX8 CSS参考:

-fx删除线
是为
文本
节点定义的

按钮
仅支持以下功能:
取消
默认
,以及从标记为的
继承的所有功能:

-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
标签为
控件继承这些属性:
-fx皮肤
-fx焦点可遍历

因此,看看支持的属性,下面的工作(当然不是删除线):

不支持
-fx删除线
CSS属性,因此设置该属性无效

以下是正式的JavaFX8 CSS参考:

-fx删除线
是为
文本
节点定义的

按钮
仅支持以下功能:
取消
默认
,以及从标记为
继承的所有功能:

-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
标签为
控件继承这些属性:
-fx皮肤
-fx焦点可遍历

因此,看看支持的属性,下面的工作(当然不是删除线):


您需要使用CSS样式表在按钮上启用删除线。无论如何,使用CSS样式表通常比使用内联CSS setStyle命令更可取

/** file: strikethrough.css (place in same directory as Strikeout) */
.button .text {
    -fx-strikethrough: true;
}
CSS样式表使用CSS选择器选择按钮内的文本,并对其应用删除线样式。目前(从Java8开始),setStyle命令不能使用CSS选择器,因此必须使用CSS样式表来实现此功能(或者使用内联查找,这是不可取的)-无论如何,样式表是最好的解决方案

请参阅@icza的答案,了解为什么直接在按钮上设置
-fx删除线
样式无效

下面是一个示例应用程序:

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);
    }
}
评论strikethough与disable的使用


我想补充一点,如果你想删除一个按钮上的文本,你可能还想禁用这个按钮,你可以通过调用。当您这样做时,它将使按钮不起作用,并提供一个可见的指示,表明它已被禁用。默认情况下,此可见指示为按钮上的文本变灰。通常,使用删除线设置按钮文本样式是一种更好的方法。

您需要使用CSS样式表在按钮上启用删除线。无论如何,使用CSS样式表通常比使用内联CSS setStyle命令更可取

/** file: strikethrough.css (place in same directory as Strikeout) */
.button .text {
    -fx-strikethrough: true;
}
CSS样式表使用CSS选择器选择按钮内的文本,并对其应用删除线样式。目前(从Java8开始),setStyle命令不能使用CSS选择器,因此必须使用CSS样式表来实现此功能(或者使用内联查找,这是不可取的)-无论如何,样式表是最好的解决方案

请参阅@icza的答案,了解为什么直接在按钮上设置
-fx删除线
样式无效

下面是一个示例应用程序:

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);
    }
}
评论strikethough与disable的使用


我想补充一点,如果你想删除一个按钮上的文本,你可能还想禁用这个按钮,你可以通过调用。当您这样做时,它将使按钮不起作用,并提供一个可见的指示,表明它已被禁用。默认情况下,此可见指示为按钮上的文本变灰。通常,使用删除线来设置按钮文本样式是一种更好的方法。

谢谢。我仔细地看着。有没有办法把按钮上的文字删掉?谢谢。我聚精会神地看着。有没有办法把按钮上的文字删掉?