问题描述:我无法在JavaFX中获得对象的背景.我不是指形状,而是像Buttons,Tabs等常规节点.我不知道如何访问他们的背景颜色.

我想要的是?我正在开发IDE,我想在选项卡上运行Color动画,文件是用户想要打开的,并且已经存在于程序文件集合中.在做这个动画之前,我想阅读原始标签背景颜色,并在动画结束时将颜色返回到标签.此外,我想回到悬停和选定的属性,当我在动画中设置一些颜色并且它们永远不会回来时它会消失.我在CSS文件中设置的所有颜色,我不想更改它.

我的问题:如何以编程方式获取和设置节点颜色?或者如何使用保存原始属性进行颜色动画,并在动画结束时获取此属性?

一个简短的例子:

sample.fxml

styles.css的

.tab{

-fx-background-color: pink;}

.tab:hover{

-fx-background-color: red;}

.tab:selected{

-fx-background-color: yellow;}

解决方法:

据我所知,公共API中没有办法确定当前用作区域(包括控件)的背景颜色(除非你知道它是由内联样式设置的,在这种情况下)你可以解析getStyle()的结果或通过调用setBackground(…)来解析.但我认为没理由你会想要这个;如果删除任何内联样式或背景属性,颜色将恢复为css文件中定义的颜色.

这是一个简单的示例,其中背景颜色由线性渐变(通过内联样式)设置,随着任务的进行滑动:

import javafx.application.Application;

import javafx.beans.binding.Bindings;

import javafx.beans.binding.IntegerBinding;

import javafx.concurrent.Task;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.Tab;

import javafx.scene.control.TabPane;

import javafx.scene.layout.StackPane;

import javafx.stage.Stage;

public class ColoredTabDemo extends Application {

private int tabCount ;

@Override

public void start(Stage primaryStage) {

TabPane tabPane = new TabPane();

for (int i = 0; i < 4; i++) {

tabPane.getTabs().add(createTab());

}

Scene scene = new Scene(tabPane, 600, 400);

scene.getStylesheets().add("colored-tab-demo.css");

primaryStage.setScene(scene);

primaryStage.show();

}

private Tab createTab() {

Tab tab = new Tab("Tab "+(++tabCount));

Button button = new Button("Load file...");

button.setOnAction(e -> {

Task task = new Task() {

@Override

public Void call() throws Exception {

// simulate loading:

for (int i=1; i <= 500; i++) {

updateProgress(i, 500);

Thread.sleep(20);

}

return null ;

}

};

IntegerBinding progressAsPercent = Bindings.createIntegerBinding(() ->

(int) (task.getProgress() * 100), task.progressProperty());

tab.styleProperty().bind(Bindings.format("-fx-background-color: "

+ "linear-gradient(to right, -fx-accent 0%%, -fx-accent %d%%, -fx-background %1$d%%, -fx-background 100%%);",

progressAsPercent));

button.setDisable(true);

task.setOnSucceeded(evt -> {

tab.styleProperty().unbind();

tab.setStyle("");

button.setDisable(false);

});

new Thread(task).start();

});

tab.setContent(new StackPane(button));

return tab ;

}

public static void main(String[] args) {

launch(args);

}

}

colored-tab-demo.css与您发布的几乎完全相同,但使用查找颜色而不是直接设置-fx-background-color:

.tab{

-fx-background-color: -fx-background;

-fx-background: pink ;

}

.tab:hover{

-fx-background: red;

}

.tab:selected{

-fx-background: yellow;

}

标签:java,javafx,animation,background,colors

来源: https://codeday.me/bug/20191008/1873236.html

fxml设置背景_JavaFX – 如何获取Tab,Button等的背景颜色相关推荐

  1. android中在java代码中设置Button按钮的背景颜色

    android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...

  2. MFC 基础知识:对话框背景添加图片和按钮Button添加图片

    很长时间没有接触MFC相关的知识了,我大概是在大二时候学习的MFC相关知识及图像处理,现在由于要帮个朋友完成个基于C++的程序,所以又回顾了下相关知识.的确,任何知识一段时间过后都比较容易忘记,但回顾 ...

  3. python设置word背景色_Java 给Word不同页面设置不同背景

    Java 给Word不同 Word文档中,可直接通过[设计]-[页面颜色]页面颜色,通过Java代码可参考如下设置方法: 1. 设置单一颜色 doc.getBackground().setType(B ...

  4. Pyqt5 在表格中单元格设置下拉框,并根据选项改变背景颜色

    关于怎么在表格中单元格设置下拉框,并根据选项改变背景颜色 def table_combox_init(self):combox_statePlm_jria_list = ['', '无', 'O', ...

  5. 计算机网络配置IP老是自动出现默认IP,我的电脑设置的是自动获取IP为什么每次开机后IP地址就变了啊!重初學者动设置然后再自动获取才会回来...

    自动获取当然会变,设定固定IP就不会了厂里的局域网,自动获取当然会根据当时的不同情况而改变IP地址喽.如果网速慢的话,可以找找厂里分管网络的人员 这个要看你们厂里DHCP服务器如何配置的,一般像你说的 ...

  6. layui获取tab页id_LayUI的Tab选项卡切换显示对应数据

    LayUI tab选项卡 + 分页展示 实现 Tab选项卡切换显示对应数据 要求:实现tab选项卡改变的同时展示数据也跟着改变 实现条件: 1.选项卡[官网 – 文档/示例 – 页面元素 – 选项卡] ...

  7. Keil5----显示空白符和设置使用空白格表示Tab键

    一.Keil5界面----显示空白符 首先打开Keil5-MDK界面,然后按照下面步骤操作. 步骤1:点击 Edit(编辑),然后点击 Configuration(配置) 步骤2:勾选 View Wh ...

  8. 【PS笔记系列】1.获取图片中某一部分(1)图片背景与要获取的部分相对较明显...

    特别说明:图中示例PS版本7.0版,比较老. 本篇中用到的工具 魔棒 图片背景与要获取的部分相对较明显 可以看到上图中的树与背景的对比还是相对明显的,那么现在我想要获得这个树 第一步 点击魔棒,然后点 ...

  9. 修改Android主题里Button的默认背景颜色

    修改Android主题里Button的默认背景颜色 先用这个试试 android:backgroundTint="@null" 去不掉的话用下面这个 app:backgroundT ...

最新文章

  1. DNS,edns,httpdns杂谈
  2. jvm类加载机制总结
  3. 多個excel文件合并到一個excel文件
  4. mouseover/out和mouseenter/leave的区别及用法
  5. 操作系统(1) 发展历史
  6. python 灰度图像素灰度值求和_如何在python中更改灰度图像中特定类型的像素值?...
  7. 【Docker】文件拷贝
  8. NB-IOT开发实战
  9. 【应用软件】用jpg+swf制作gif动感小图(附带AVI转gif技巧)
  10. 谷歌应用内购神器Freedom原理解析
  11. vue项目运行npm install报错
  12. YII2 高级版本 发送163邮件
  13. switch初始化说服务器维护中,switch国行怎么初始化-switch国行初始化教程
  14. 秒杀脚本丨Python淘宝或京东等秒杀抢购脚本实现
  15. android电梯程序设计,[源码和文档分享]基于Android实现的电梯调度模拟
  16. 好书推荐---单片机编程魔法师之高级裸编程思想
  17. 第8关:判断条件的相容性
  18. Scapy功能介绍以及应用
  19. 机器学习学习笔记-持续学习(Continual Learning/ Life-long Learning)
  20. ES5、ES6自学笔记

热门文章

  1. android学习笔记之ProgressDialog的使用
  2. 使用Combres 库 ASP.NET 网站优化
  3. 140. Word Break II
  4. Depth-first Search深度优先搜索专题5
  5. [Leetcode][第841题][JAVA][钥匙和房间][DFS][BFS]
  6. 康宁玻璃ct值计算公式_【钦州】CT室铅板生产厂家
  7. linux 识别文件类型,技术|Linux 中 7 个判断文件系统类型的方法
  8. php 创建数据库并填充,php操作mysql--连接数据库创建表填充表
  9. word可以直接导入mysql嘛_如何把word文档导入到数据库中——java POI
  10. python autoit上传文件_结合python+selenium使用AutoIt V3实现文件、图片上传