我想在一个CSS中制作2种不同风格的按钮。因此,在创建第二个按钮时,我使用以下方法为其添加了类:
close.getStyleClass().add("close-button");
所以现在我可以在css中引用这个按钮:
.button.close-button
但是现在我不知道在使用.close-button
类时如何引用按钮的伪类。
我尝试通过
访问它.button.close-button:selected
或
.button:selected.close-button
这些似乎都不起作用。有什么方法可以做到吗?或者我是否必须为.close-button
类创建自己的伪类,并在代码中的btton监听器中添加和删除它们?
我正在创建按钮:
Button close = new Button("X");
close.getStyleClass().add("close-button");
close.setOnAction((event) -> {
....
});
比我将它添加到布局中: HBox hbox = new HBox(rbSelect,label,pane,close);
我的css看起来像:
.button {
...
}
.button.close-button {
-fx-background-color: #E81123;
}
.button:selected.close-button {
-fx-background-color: greenyellow;
}
似乎没有任何反应,当我希望按钮将颜色改为greenyellow
时答案 0 :(得分:1)
我不是100%确定这是必要的,但按照惯例,在类选择器之后添加伪类选择器:
.button.close-button:selected {
-fx-background-color: greenyellow;
}
但selected
没有Button
个伪类。它适用于CheckBox
和ToggleButton
,但不适用于常规Button
。可用的伪类是:pressed
和:hover
,see css reference。
当然,您可以自己添加伪类,假设您使用的是JavaFX 8:
PseudoClass selected = PseudoClass.getPseudoClass("selected");
close.setOnAction((event) -> {
....
close.pseudoClassStateChanged(selected, true);
});