使用CSS设置JavaFX饼图样式

渲染图表时, JavaFX默认提供某些颜色。 但是,在某些情况下,您想自定义这些颜色。 在此博客文章中,我将使用一个示例来更改JavaFX饼图的颜色,该示例打算在今天下午在RMOUG Training Days 2013的演示中包括。一些基于Java的图表API提供了Java方法来设置颜色。 JavaFX诞生于HTML5流行的年代,而是使用级联样式表 (CSS)来允许开发人员调整其图表中使用的颜色,符号,位置,对齐方式和其他样式问题。 我在这里演示了如何使用CSS更改颜色。

在本文中,我将看两个代码示例,这些示例演示了简单的JavaFX应用程序,这些应用程序基于Oracle示例“ hr”模式中的数据来呈现饼图。 首先
该示例未指定颜色,因此将JavaFX的默认颜色用于饼图和图例背景。 那 示例如下所示。

EmployeesPerDepartmentPieChart(默认JavaFX样式)

package rmoug.td2013.dustin.examples;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;/*** Simple JavaFX application that generates a JavaFX-based Pie Chart representing* the number of employees per department.* * @author Dustin*/
public class EmployeesPerDepartmentPieChart extends Application
{final DbAccess databaseAccess = DbAccess.newInstance();@Overridepublic void start(final Stage stage) throws Exception{final PieChart pieChart =new PieChart(ChartMaker.createPieChartDataForNumberEmployeesPerDepartment(this.databaseAccess.getNumberOfEmployeesPerDepartmentName()));pieChart.setTitle('Number of Employees per Department');stage.setTitle('Employees Per Department');final StackPane root = new StackPane();root.getChildren().add(pieChart);final Scene scene = new Scene(root, 800 ,500);stage.setScene(scene);stage.show();}public static void main(final String[] arguments){launch(arguments);}
}

执行上述简单应用程序后,将显示下一个屏幕快照中显示的输出。

我现在将改编以上示例,以使用自定义的蓝色主题派切片“主题”,图例上带有棕色背景。 Java代码仅需要一行就可以包含具有图表样式详细信息CSS文件。 在这种情况下,我添加了几行以捕获并打印出尝试加载CSS文件时可能发生的任何异常。 使用这种方法,加载CSS文件时遇到的任何问题都将仅导致说明问题的标准错误输出,并且应用程序将以其正常的默认颜色运行。

EmployeesPerDepartmentPieChartWithCssStyling(自定义CSS样式)

package rmoug.td2013.dustin.examples;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;/*** Simple JavaFX application that generates a JavaFX-based Pie Chart representing* the number of employees per department and using style based on that provided* in CSS stylesheet chart.css.* * @author Dustin*/
public class EmployeesPerDepartmentPieChartWithCssStyling extends Application
{final DbAccess databaseAccess = DbAccess.newInstance();@Overridepublic void start(final Stage stage) throws Exception{final PieChart pieChart =new PieChart(ChartMaker.createPieChartDataForNumberEmployeesPerDepartment(this.databaseAccess.getNumberOfEmployeesPerDepartmentName()));pieChart.setTitle('Number of Employees per Department');stage.setTitle('Employees Per Department');final StackPane root = new StackPane();root.getChildren().add(pieChart);final Scene scene = new Scene(root, 800 ,500);try{scene.getStylesheets().add('chart.css');}catch (Exception ex){System.err.println('Cannot acquire stylesheet: ' + ex.toString());}stage.setScene(scene);stage.show();}public static void main(final String[] arguments){launch(arguments);}
}

接下来显示的是chart.css文件:

chart.css

/*Find more details on JavaFX supported named colors athttp://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html#typecolor
*//* Colors of JavaFX pie chart slices. */
.data0.chart-pie { -fx-pie-color: turquoise; }
.data1.chart-pie { -fx-pie-color: aquamarine; }
.data2.chart-pie { -fx-pie-color: cornflowerblue; }
.data3.chart-pie { -fx-pie-color: blue; }
.data4.chart-pie { -fx-pie-color: cadetblue; }
.data5.chart-pie { -fx-pie-color: navy; }
.data6.chart-pie { -fx-pie-color: deepskyblue; }
.data7.chart-pie { -fx-pie-color: cyan; }
.data8.chart-pie { -fx-pie-color: steelblue; }
.data9.chart-pie { -fx-pie-color: teal; }
.data10.chart-pie { -fx-pie-color: royalblue; }
.data11.chart-pie { -fx-pie-color: dodgerblue; }/* Pie Chart legend background color and stroke. */
.chart-legend { -fx-background-color: sienna; }

运行此CSS样式的示例将导致输出,如下一个屏幕快照所示。 切片为不同的蓝色阴影,图例的背景为“'色”。 请注意,例如,虽然我使用JavaFX“命名颜色”,但我也可能对蓝色使用“#0000ff”。

我的便利类ChartMakerDbAccess没有在此处显示代码。 后者只是通过JDBC从Oracle数据库模式中检索图表的数据,而前者则将该数据转换为适合PieChart(ObservableList)构造函数的Observable集合。

在这里需要特别注意的是,正如Andres Almiray 指出的那样 ,通常不宜像我在本博客和其他博客文章中所做的那样,从主要JavaFX UI线程(又名JavaFX Application Thread)执行长时间运行的进程。例子。 我可以在这些文章中忽略它,因为这些示例很简单,数据库检索很快,并且图表呈现应用程序没有比该呈现更多的内容,因此很难观察到任何“挂起”。 在以后的博客文章中,我打算研究使用JavaFX javafx.concurrent包( 在JavaFX的Concurrency中已经对此进行了很好的描述)来处理数据库访问(或任何长时间运行的操作)的更好方法。

JavaFX允许开发人员控制更多,而不仅仅是使用CSS绘制图表颜色。 两个非常有用的资源详细介绍了如何使用CSS样式化JavaFX图表,这是“ 使用JavaFX图表”部分的“ 使用CSS样式化图表”和“ JavaFX CSS参考指南” 。 CSS作为样式化Web和移动应用程序的一种方法正变得越来越流行。 通过在JavaFX中支持CSS样式,可以轻松地将与它们可能共存的基于HTML的应用程序相同的样式应用于JavaFX应用程序。

参考:来自我们的JCG合作伙伴 Dustin Marx在Inspired by Actual Events博客上使用CSS设置JavaFX饼图样式 。

翻译自: https://www.javacodegeeks.com/2013/02/styling-javafx-pie-chart-with-css.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 错误: 找不到或无法加载主类

这个问题应该很常见的,笔者经常手工编译一些测试代码或者小工具,经常用到 javac和java来编译并运行一些简单的小工具。 以Hello World来测试。 HelloWorld.java public class HelloWorld{public static void main(String[]args){System.out.println(&quo…

在Visual Studio Code中配置GO开发环境

一、GO语言安装 详情查看:GO语言下载、安装、配置 二、GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github.com/microsoft/vscode-go 这款插件的特性包括: Colorizatio…

最受欢迎的应用服务器

这是本系列的第二篇文章,我们将发布有关Java安装的统计数据。 使用的数据集来自免费的Plumbr安装,在过去六个月中,我们总共收集了1,024个不同的环境。 本系列的第一篇文章分析了基础-运行JVM的操作系统,是32位还是62位基础架构以…

SON_EXAM考试php,通用全国少儿英语等级考试:三星笔试真题

单项选择:36. exciting the game was! I enjoyed every minute of it.A.What B. How C.What an B.How an37.You stay here if youve finished your work.A.neednt B.mustnt C. shouldnt D.cant38 Nanjing Road in Shanghai is always crowded peole.A.with B.by c.o…

CSS基础知识(display和visibility、overflow、文档流)

9、显示与隐藏 u display属性: (1)none:隐藏元素,不会再占有页面的任何空间,即不会影响布局。 (2)inline:默认值。将元素[显示]为内联元素 (与HTML元素本身无关系) (3)block&#xff1a…

最受欢迎的Java环境

该职位将是即将发布的系列文章中的第一篇。 我们从所使用的环境开始:如果您感兴趣的是最受欢迎的JVM供应商或JVM版本,那么32bit是比64bit更流行的体系结构,还是Windows 8比Windows XP更流行的体系结构-这些都将在我们的文章中介绍。 在下一个…

使用宏实现透视表部分功能,将AB列数据合并统计.

功能:1.筛选B列;2.将A列中的值按照筛选后的结果进行合计. 这个特殊点是按照月日进行筛选的. Sub count_a() Dim sh As Worksheet Set sh ActiveSheet Range("C2:D" & [D65536].End(3).Row).Clear For line_b 2 To [B65536].End(3).Row If Len(Cells(line_b, &q…

HTML基础知识(常见元素、列表、链接元素、图片元素)

1、HTML有关概念 全称: Hyper Text Markup Language&#xff08;超文本标记语言&#xff09; 其文件扩展名为“.html”或“.htm” * 超文本 - 在普通的文本基础上&#xff0c;添加超链接、图片、音频或视频等 * 标记 - 标记就是HTML中的标签(元素)&#xff0c;特点:<a> …

权限和ACL练习题

1、在/testdir/dir里创建的新文件自动属于g1组&#xff0c;组 g2的成员如&#xff1a;alice能对这些新文件有读写权限&#xff0c;组g3 的成员如&#xff1a;tom只能对新文件有读权限&#xff0c;其它用户&#xff08;不 属于g1,g2,g3&#xff09;不能访问这个文件夹。 前期准备…

CSS3的过渡和转换

CSS3的过渡和转换 1.过渡 什么是过渡呢&#xff1f;过渡通俗的来说就是从一个样式到另一个样式的逐渐转换改变的效果。 过渡的属性&#xff1a; 属性 描述csstransition简写属性&#xff0c;用于在一个属性中设置4个过渡属性3transition-property规定应用过渡的css属性的名称…

JavaEE概念简介

这篇文章旨在澄清J2EE范例中使用的首字母缩写词和概念。 J2EE代表Java to Platform&#xff0c;Entreprise Edition。 它使创建模块化Java应用程序成为可能&#xff0c;并将其部署在应用程序服务器上。 它依赖于Java SE&#xff0c;Java SE是一组Java库的核心&#xff0c;所有J…

js php 数据类型判断,【js基础】变量类型判断

类型判断方法比较&#xff1a;如果需要想详细了解&#xff0c;请看下文:注&#xff1a;原封不动复制备份&#xff0c;防止删帖在JavaScript中&#xff0c;有5种基本数据类型和1种复杂数据类型&#xff0c;基本数据类型有&#xff1a;Undefined, Null, Boolean, Number和String&…

HTML阻止iframe跳转页面并使用iframe在页面内嵌微信网页版

昨天看到这篇文章[置顶]开源组件NanUI一周年 - 使用HTML/CSS/JS来构建.Net Winform应用程序界面 就想弄一个winform结合html5的一个小东西&#xff0c;突有兴致&#xff0c;想在里面嵌套一个微信网页版。 好了&#xff0c;想法一出来&#xff0c;就行动吧&#xff0c;最终效果…

标准模板库(STL)学习指南之set集合

set是关联容器。其键值就是实值&#xff0c;实值就是键值&#xff0c;不可以有重复&#xff0c;所以我们不能通过set的迭代器来改变set的元素的值&#xff0c;set拥有和list相同的特性&#xff1a;当对他进行插入和删除操作的时候&#xff0c;操作之前的迭代器依然有效。当然删…

CSS布局技巧之——各种居中

居中是我们使用css来布局时常遇到的情况。使用css来进行居中时&#xff0c;有时一个属性就能搞定&#xff0c;有时则需要一定的技巧才能兼容到所有浏览器&#xff0c;本文就居中的一些常用方法做个简单的介绍。 注&#xff1a;本文所讲方法除了特别说明外&#xff0c;都是兼容…

OpenJPA:内存泄漏案例研究

本文将提供完整的根本原因分析详细信息以及解决影响Oracle Weblogic Server 10.0生产环境的Java堆内存泄漏&#xff08;Apache OpenJPA泄漏&#xff09;的方法。 这篇文章还将演示在管理javax.persistence.EntityManagerFactory生命周期时遵循Java Persistence API最佳实践的重…

以A表中的值快速更新B表中记录的方法

1、问题描述 有两张表&#xff0c;A表记录了某些实体的新属性&#xff0c;B表记录了每个实体的旧属性&#xff0c;现在打算用A中的属性值去更新B中相同实体的旧属性&#xff0c;如下图所示&#xff1a; 类似这样的需求&#xff0c;怎样做比较高效呢&#xff1f; 2、制作模拟数…

JAXB教程–入门

注意&#xff1a;请查看我们的Java XML绑定JAXB教程– ULTIMATE指南 什么是JAXB&#xff1f; JAXB代表用于XML绑定的Java体系结构。它用于将XML转换为java对象&#xff0c;并将java对象转换为XML。JAXB定义了一个用于在XML文档中读写Java对象的API。与SAX和DOM不同&#xff0c…

《Kubernetes权威指南第2版》学习(二)一个简单的例子

1&#xff1a; 安装VirtualBox, 并下载CentOS-7-x86_64-DVD-1708.iso&#xff0c; 安装centOS7,具体过程可以百度。 2&#xff1a;开启centOS的SSH&#xff0c; 步骤如下&#xff1a; &#xff08;1&#xff09; yum list installed | grep openssh-server查看是否已经安装了SS…

linux 安装ftp下载,LINUX FTP安装与配置

转载了一篇配置vsftpd服务器的文章&#xff0c;经过自己的配置&#xff0c;终于搞定了&#xff01;1.安装vsftpdXml代码 yum install vsftpd2.启动/重启/关闭vsftpd服务器Xml代码 [rootlocalhost ftp]# /sbin/service vsftpd restartShutting down vsftpd: [ OK ]Starting vs…