JavaFX8-如何在调用自定义控件的构造函数时初始化其CSS
我正在使用JavaFX编程一个自定义控件,特别是一个自定义按钮JavaFX8-如何在调用自定义控件的构造函数时初始化其CSS,css,javafx-8,Css,Javafx 8,我正在使用JavaFX编程一个自定义控件,特别是一个自定义按钮 public class MyButton extends Button { public MyButton(String text) { super(text); getStylesheets().add(getClass().getResource("/mystyle.css").toExternalForm(); getStyleClass().add("my-butto
public class MyButton extends Button {
public MyButton(String text) {
super(text);
getStylesheets().add(getClass().getResource("/mystyle.css").toExternalForm();
getStyleClass().add("my-button");
}
//other stuff
}
在mystyle.css中,我有以下css规则
.my-button {
-fx-background-color: gray;
-fx-background-radius: 2;
}
然后在start方法中,我以这种方式将按钮添加到stage
VBox root=new VBox();
Scene scene = new Scene(root, 400, 400);
MyButton button=new MyButton("Click me");
root.getChildren().add(button);
stage.setScene(scene); // stage is the name of Stage parameter
stage.show();
按钮看起来像这样
现在,如果我在按钮构造函数下添加代码
button.setBackground(new Background(new BackgroundFill(
Color.YELLOW, new CornerRadii(20), new Insets(0,0,0,0)
)));
按钮看起来还是一样的,应该是这样的
我认为问题在于CSS类是在一定的延迟后应用的,所以当应用样式表时,会覆盖手动指定的背景
我想要的是一种直接在构造函数内部应用CSS的方法。可能吗?
谢谢您的帮助。您是否尝试在构造函数内部调用
applyCSS()
?是的,我做了,但没有改变,按钮仍然保持不变。