Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX内联CSS悬停效果_Java_Css_User Interface_Javafx - Fatal编程技术网

JavaFX内联CSS悬停效果

JavaFX内联CSS悬停效果,java,css,user-interface,javafx,Java,Css,User Interface,Javafx,我正在通过从标签延伸来构建一个服装按钮。 我知道您可以在.java文件中使用CSS,包括: setStyle("-fx-background-color: #101010"); 这很酷,我经常使用它 但我的问题是:这似乎不适用于悬停效果。 在外部CSS文件中,您可以有: #LabelButton:hover { -fx-background-color: #aaaaaa; } 我希望在我的Java文件中有这个带有“XXX:hover”的特性,因为十六进制颜色代码必须是可变的,这在使用外部

我正在通过从标签延伸来构建一个服装按钮。 我知道您可以在.java文件中使用CSS,包括:

setStyle("-fx-background-color: #101010");
这很酷,我经常使用它

但我的问题是:这似乎不适用于悬停效果。 在外部CSS文件中,您可以有:

#LabelButton:hover {
  -fx-background-color: #aaaaaa;
}
我希望在我的Java文件中有这个带有“XXX:hover”的特性,因为十六进制颜色代码必须是可变的,这在使用外部CSS文件时是不可能的。所以我有点想要它:

setStyle("hover:-fx-background-color: #101010");
但是我找不到正确的语法,更不用说有语法了。 如果没有这样的功能,我应该怎么做呢?
谢谢

在内联CSS中无法使用任何类型的选择器。无论节点的状态如何,内联样式始终应用于该节点(指定相应节点属性的情况除外)

您可以将
style
属性绑定到节点的
hover
属性

myButton.styleProperty().bind(Bindings.when(myButton.hoverProperty())
                                      .then("-fx-background-color: #101010")
                                      .otherwise("-fx-background-color: #aaaaaa"));
如果你想改变焦点按钮和按下按钮的样式,这可能会变得非常难看。因此,我建议将CSS和内联CSS结合起来,以实现所需的样式:

您可以在CSS中定义自己的变量颜色变量:

样式表
.label按钮{/*为选择器使用样式类(ID用于单个节点)*/
/*指定默认值*/
-fx正常背景:黄色;
-fx悬停背景:红色;
-fx背景色:-fx正常背景;
}
.标签按钮:悬停{
-fx背景色:-fx悬停背景;
}
java代码
从纯粹主义者的角度来看,分配类和ID并将css放在单独的文件中会更干净。就我的2美分,我知道,我知道。但正如我所说,这对我来说不起作用,因为我需要使十六进制颜色代码可变。如果你的问题是外部CSS文件,你也可以将CSS放入元素中。查看你的问题历史,我几乎看不到任何回应。你可能想复习一下。对评论的回应也很好。你是什么意思?
myButton.setStyle("-fx-normal-background: #101010; -fx-hovered-background: #aaaaaa;");