gpt4 book ai didi

java - 以编程方式更改嵌套元素的 CSS 规则

转载 作者:行者123 更新时间:2023-11-30 02:32:42 25 4
gpt4 key购买 nike

我有一个 SplitPane 和具有以下规则的 css 文件:

.split-pane > .split-pane-divider {  
-fx-padding: 0 0 0 1;
-fx-background-color:-fx-background;
}

现在,在运行时我需要更改分隔符的这些规则。我试过了

SplitPane.Divider divider = splitPane.getDividers().get(0);
divider.setStyle("-fx-padding: 1 1 1 1; -fx-background-color:-fx-background;");

但是SplitPane.Divider类中没有方法setStyle

如何在运行时更改这些规则?

最佳答案

一种可能是在 CSS 文件中定义一个新的样式类:

.split-pane > .split-pane-divider {
-fx-padding: 0 0 0 1;
-fx-background-color: green;
}

.modified-split-pane > .split-pane-divider {
-fx-padding: 1 1 1 1;
-fx-background-color: red;
}

然后在代码中添加/删除此样式类,因为您需要修改后的样式类或原始样式类:

// Modified style
splitPane.getStyleClass().add("modified-split-pane");
// Original style
splitPane.getStyleClass().remove("modified-split-pane")
<小时/>

您还可以使用PseudoClass API:

.split-pane > .split-pane-divider {
-fx-padding: 0 0 0 1;
-fx-background-color: green;
}

.split-pane:version1 > .split-pane-divider {
-fx-padding: 1 1 1 1;
-fx-background-color: red;
}

然后在代码中激活/停用这个伪类:

PseudoClass version1Pseudo = PseudoClass.getPseudoClass("version1");
splitPane.pseudoClassStateChanged(version1Pseudo, true);
splitPane.pseudoClassStateChanged(version1Pseudo, false);
<小时/>

还可以通过使用 Node#lookupAll 从场景图中获取分隔符 Node 来直接在代码中设置运行时的样式属性。 (或查找)方法,但我强烈建议避免这种方法

for (Node node: splitPane.lookupAll(".split-pane-divider"))
node.setStyle("-fx-background-color: red; -fx-padding: 1 1 1 1;");

关于java - 以编程方式更改嵌套元素的 CSS 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com