The*_*nes 2 css java user-interface javafx
我正在通过从标签扩展来构建服装按钮。我知道您可以在 .java 文件中使用 CSS:
setStyle("-fx-background-color: #101010");
Run Code Online (Sandbox Code Playgroud)
这非常酷,我经常使用它。
但我的问题是:这似乎不适用于悬停效果。在外部 CSS 文件中,您可以拥有:
#LabelButton:hover {
-fx-background-color: #aaaaaa;
}
Run Code Online (Sandbox Code Playgroud)
我希望在我的 Java 文件中使用“XXX:hover”这个功能,因为十六进制颜色代码必须是可变的,而在使用外部 CSS 文件时这是不可能的。所以我有点想要这样:
setStyle("hover:-fx-background-color: #101010");
Run Code Online (Sandbox Code Playgroud)
但我找不到正确的语法,更不用说有语法了。如果没有这样的功能,那我该怎么办呢?谢谢!
在内联 CSS 中无法使用任何类型的选择器。内联样式始终应用于节点,无论其状态如何(分配相应的节点属性除外)。
您可以将该style
属性绑定到hover
节点的属性。
myButton.styleProperty().bind(Bindings.when(myButton.hoverProperty())
.then("-fx-background-color: #101010")
.otherwise("-fx-background-color: #aaaaaa"));
Run Code Online (Sandbox Code Playgroud)
如果您想要以不同的方式设置聚焦按钮和按下按钮的样式,这可能会变得非常难看。出于这个原因,我建议结合 CSS 和内联 CSS 来实现所需的样式:
您可以在 CSS 中定义自己的变量颜色变量:
myButton.styleProperty().bind(Bindings.when(myButton.hoverProperty())
.then("-fx-background-color: #101010")
.otherwise("-fx-background-color: #aaaaaa"));
Run Code Online (Sandbox Code Playgroud)
myButton.setStyle("-fx-normal-background: #101010; -fx-hovered-background: #aaaaaa;");
Run Code Online (Sandbox Code Playgroud)