问题描述:我无法获得JavaFX中对象的背景。我不是指形状,而是正常的节点,如按钮,标签和其他。我不知道如何访问他们的背景颜色。JavaFX - 如何获取Tab,Button等的背景颜色
我想要什么?我正在开发IDE,我想在用户想要打开的文件的选项卡上运行Color动画,并且已经存在于程序文件集合中。在做这个动画之前,我想读取原始选项卡的背景颜色,并将该颜色返回到动画结尾处的选项卡。此外,我还想返回hover
和selected
属性,当我在动画中设置一些颜色时它们会消失,并且它们永不回头。所有我在CSS文件中设置的颜色,我不想改变它。
我的问题:如何以编程方式获取和设置节点颜色?或者如何在保存原始属性的情况下进行彩色动画,并在动画结束时获取这些属性?
一个短例如:
sample.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<TabPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="480.0" prefWidth="600.0" stylesheets="@style.css" tabClosingPolicy="UNAVAILABLE" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<tabs>
<Tab text="Sample tab 1">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
</Tab>
<Tab text="Sample tab 2">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
</Tab>
<Tab text="Sample tab 3">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
</Tab>
</tabs>
</TabPane>
styles.css的
.tab{
-fx-background-color: pink;}
.tab:hover{
-fx-background-color: red;}
.tab:selected{
-fx-background-color: yellow;}
有没有办法(我知道)以编程方式检索定义在CSS文件中的样式。但目前还不清楚为什么你需要。您可以设置内联样式,但希望样式不同,然后将其删除(以便它将恢复为样式表样式);或者添加一个新的样式类并将其删除,或者设置一个CSS伪类并将其取消设置以恢复到之前的样式。 –
我想有如何获得背景颜色(国际海事组织无关紧要的颜色从CSS文件加载或以某种方式编程)。如何Java知道显示什么颜色?我不这么认为,Java一次又一次地读取CSS文件。我认为某处是关于存储这种颜色的infomarion,但问题是如果我有权访问该信息以及如何访问。 –
如果颜色是在外部样式表中定义的(无论是您自己的还是默认样式),那么无法通过公共API以编程方式获取该信息。当然,控制本身(或更确切地说,它的皮肤)拥有这些数据,但它们不是公众可以访问的。但是,我真的不明白你为什么想要。 –