JavaFx:是否可以检查元素是否具有特定的样式类?

标签 java css javafx

我正在制作每次按下时都需要在两种颜色之间切换的按钮。我想通过比较样式类来查看它是否与“绿色”或“红色”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/

相关文章:

java - 如何在文本区域上绘图?

java - <h :messages> in JSF 页面上的错误消息

Java 和对象序列化

java - TableView 单元格自动换行

html - 如何使用 Bootstrap 4 创建图标菜单?

javascript - Mozilla 和 IE 修改了我的下拉列表的外观,但 chrome 没有

java - 如何从外部更新JavaFX场景?

java - 将读取文件中的整数字符存储到二维数组中

java - 使用 HttpPost 上传文件 Android

javascript - 如何在javascript中获取浏览器窗口大小?