有没有一种方法可以给JavaFX类一个新的样式类,然后正常访问该类中的所有其他对象?

时间:2020-02-11 19:39:11

标签: java css eclipse javafx

我目前有一个JavaFX项目,我正在努力使CSS更好。我创建了一些包含其他类的类(即Button,TextField,ScrollPane等)

为简便起见,我们将其称为“一类存储桶”。

在我的Bucket类中,我还有一个Button和TextField。

我通过执行以下操作将新的styleClass添加到存储桶中:

MyFBSchema_generated.h

完成此操作后,我将移至CSS文件,并希望更改Bucket类中按钮的文本颜色。

我是否还需要为按钮提供一个新的StyleClass(),还是可以通过以下方式访问它:

getScene().getStyleClass().add("bucket");

如果我可以做后者,该如何工作?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

假设Bucket类似于:

public class Bucket extends Region { // or extends Pane, Control, some other Parent

  public Bucket() {
    getStyleClass().add("bucket");

    Button button = new Button("Some text");
    getChildren().add(button);
  }
}

然后是的,您将使用:

.bucket > .button {
  -fx-text-fill: <your-color>;
}

如果该按钮不是Bucket的直接子代,则放弃>。不确定如何回答:“ 如果我可以做到,怎么办?”。您可以完成后者,而就是如何使其工作(尽管您的示例未使用正确的CSS属性)。

请注意,getStyleClass().add("some-style-class")是为每个节点分配样式类的方式。因此,您执行完全相同的操作即可使用该API。

有关更多信息,请参见JavaFX CSS Reference Guide