我目前有一个JavaFX项目,我正在努力使CSS更好。我创建了一些包含其他类的类(即Button,TextField,ScrollPane等)
为简便起见,我们将其称为“一类存储桶”。
在我的Bucket类中,我还有一个Button和TextField。
我通过执行以下操作将新的styleClass添加到存储桶中:
MyFBSchema_generated.h
完成此操作后,我将移至CSS文件,并希望更改Bucket类中按钮的文本颜色。
我是否还需要为按钮提供一个新的StyleClass(),还是可以通过以下方式访问它:
getScene().getStyleClass().add("bucket");
如果我可以做后者,该如何工作?
感谢您的帮助!
答案 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。