我正在制作每次按下时都需要在两种颜色之间切换的按钮。我想通过比较样式类来查看它是否与“绿色”或“红色”CSS 类匹配来做到这一点。就像这样。
if(clickedBtn.getStyleClass() == "green") {
clickedBtn.getStyleClass().add("red");
} else {
clickedBtn.getStyleClass().add("green");
}
这不起作用,因为它不识别“绿色”。有更简单的方法吗?我只需要一个带有可选座位的图形显示器。谢谢
最佳答案
.getStyleClass()
重新运行包含样式类的 ObservableList
。这永远不会是与字符串文字相同的对象,因此 ==
检查始终会产生 false
。检查节点是否具有样式类的正确方法是调用列表的 contains
方法:
if (clickedBtn.getStyleClass().contains("green")) {
因为您可能希望红色和绿色相互排斥。您还应该删除样式类:
if(clickedBtn.getStyleClass().remove("green")) {
clickedBtn.getStyleClass().add("red");
} else {
clickedBtn.getStyleClass().remove("red");
clickedBtn.getStyleClass().add("green");
}
但是使用伪类可能会更方便一点:
private final static PseudoClass GREEN = PseudoClass.getPseudoClass("green");
private final static PseudoClass RED = PseudoClass.getPseudoClass("red");
...
boolean isGreen = clickedBtn.getPseudoClassStates().contains(GREEN);
clickedBtn.pseudoClassStateChanged(GREEN, !isGreen);
clickedBtn.pseudoClassStateChanged(RED, isGreen);
关于JavaFx:是否可以检查元素是否具有特定的样式类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47665567/