JavaFX CSS类样式

11

我如何为扩展JavaFX对象的类设置CSS样式?

public class DiagramPane extends ScrollPane implements IDiagramEditor {
    // .... Methods go here
}

我在主方法中尝试了以下方法:

public class DiagramPane extends ScrollPane implements IDiagramEditor {
    DiagramPane() {
        this.setStyle("-fx-background-color: #f8ecc2;-fx-font-size: 8pt;");
        setStyle("-fx-background-color: #f8ecc2;-fx-font-size: 8pt;");
    }
}
2个回答

21

将以下代码添加到你的CSS文件中

.diagram-pane {
    -fx-background-color: #f8ecc2;
    -fx-font-size: 8pt;
}

并将DiagramPane实例设置为使用diagram-pane样式类

diagramPane.getStyleClass().clear();
diagramPane.getStyleClass().add("diagram-pane");

我也在寻找一种方法,使一个类能够返回一个样式字符串,而不是包含一些CSS文件。 - clockw0rk

4

其中一种可能是使用Node的setStyle方法。


意思是说,为了实现某些IT技术方面的功能,可以使用Node类中的setStyle方法。
public class MyScrollPane extends ScrollPane {

    public MyScrollPane(){
        setStyle("-fx-background-color: blue;");
    }

}

使用CSS样式表的另一种可能性

这是建议采取的方法,因为它完全将CSS样式与Java代码分离。

注意:MyScrollPane.css放置在与类本身相同的目录中。

MyScrollPane.java

public class MyScrollPane extends ScrollPane {

    public MyScrollPane(){
        getStylesheets().add(getClass().getResource("MyScrollPane.css").toExternalForm());
    }

}

在这个样式表中,您可以覆盖ScrollPane的现有CSS类,例如:
MyScrollPane.css
.scroll-pane {
    -fx-background-color: red, white;
    -fx-background-insets: 0, 2;
    -fx-padding: 2.0;
}

要检查JavaFX中滚动窗格存在哪些类,您可以阅读caspian.cssScrollPane的基类是.scroll-pane
此外,您可以定义新的CSS类并将它们添加到您的ScrollPane中:
public class MyScrollPane extends ScrollPane {

    public MyScrollPane(){
        getStylesheets().add(getClass().getResource("MyScrollPane.css").toExternalForm());
        getStyleClass().add("red-border");
    }

}

在 CSS 中

.red-border {
    -fx-background-color: red, white;
    -fx-background-insets: 0, 2;
    -fx-padding: 2.0;
}

要了解JavaFX中的CSS样式,请查看以下链接:http://docs.oracle.com/javafx/2/css_tutorial/jfxpub-css_tutorial.htm 此外,您还可以查看JavaFX的CSS参考指南:https://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html

现在不能使用setUserAgentStylesheet吗? - clockw0rk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接