陕西省城乡住房建设厅网站,贵阳手机银行app,wordpress date_query,网站建设服务公司渲染图表时#xff0c; JavaFX默认提供某些颜色。 但是#xff0c;在某些情况下#xff0c;您想自定义这些颜色。 在此博客文章中#xff0c;我将使用一个示例来更改JavaFX饼图的颜色#xff0c;该示例打算在今天下午在RMOUG Training Days 2013的演示中包括。一些基于Jav… 渲染图表时 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”。 我的便利类ChartMaker和DbAccess没有在此处显示代码。 后者只是通过JDBC从Oracle数据库模式中检索图表的数据而前者则将该数据转换为适合PieChartObservableList构造函数的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