在javafx中为一堆标签设置样式

时间:2019-07-18 03:01:48

标签: javafx

我想为许多标签设置字体大小,并且可能不使用外部CSS文件。

我尝试使用Group和setStyle,但是没有用。 (我知道如何设置标签的样式,但不能设置标签类)

Group label_group = new Group();
Label lb1 = new Label("1");
Label lb2 = new Label("2");
label_group.getChildren().addAll(lb1, lb2);
label_group.setStyle("-fx-font-size:20");
Label lb1 = new Label("1");
Label lb2 = new Label("2");
label_group.getChildren().addAll(lb1, lb2);
label_group.setStyle("-fx-font-size:20");

两个标签的字体大小都不会更改为20。如何为10个标签定义属性?我不确定如何使用外部CSS文件(如果只有这样的话)。

2 个答案:

答案 0 :(得分:3)

如果您希望多个Node对象共享相同的样式(不使用外部CSS样式表),则只需使用一种简单的方法即可接受无限数量的参数(在Java中称为“ varargs”,对于“可变参数”)来应用它们:

private void setStyle(Node... nodes) {
    for (Node node : nodes) {
        node.setStyle("-fx-font-size: 20");
    }
}

然后您可以调用该方法,一次传递所有标签:

setStyle(lb1, lb2, lb3);

答案 1 :(得分:0)

如果您对学习如何使用CSS感兴趣,可以在项目的资源目录中找到以下CSS文件“ myStyle.css”

.label{
    -fx-font-size:20
} 

,然后在您的Java代码中

Label lb1 = new Label("1");
Label lb2 = new Label("2"); 
scene.getStylesheets().add(yourClassName.class.getResource("myStyle.css").toExternalForm());

其中scene是您要放置标签的任何场景(如果需要,也可以使用stage.getScene())。然后,所有标签都应使用该样式,这样您就不必每次都手动设置它,也可以将其他属性添加到CSS文件中。我最近学习了如何使用它,并且发现它使我的代码看起来不那么混乱。