提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:杨鹏连|2021-02-23 10:38:29.277|阅读 206 次
概述:在此博客文章中,我们将构建图表库中用于Java Swing的FunctionSeries,下一节将向您提供逐步指南,介绍如何从头开始构建该二次方程式图表。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
MindFusion.Diagramming for WinForms是一个能帮助你创建工作流和进程图表的.NET控件;数据库实体关系图表;组织图表;对象层次和关系图表;图表和树。它是基于对象-图表框,表格和箭头类型,将其归类分派给其他并结合成复杂的结构。该控件提供超过预先定义的50多种图表框,如自定义设计样式和对图表框着色等。MindFusion.Diagramming for WinForms现已加入在线订购,Standard Single Developer版本原价2848现在抢购立享优惠只需2345,立即查看详情>>
点击下载MindFusion.Diagramming for WinForms最新试用版
在此博客文章中,我们将构建您在下图中看到的图表:
下一节将向您提供逐步指南,介绍如何从头开始构建该二次方程式图表。
I.项目设置在您首选的Java IDe中创建一个新的Java项目,并在项目文件夹中复制JChart.jar文件。这是包含该库的* .jar存档。在我们的示例中,我们已将其复制到一个新的子文件夹中,该子文件夹称为“库”。JChart.jar在Java Swing的MindFusion Charting试用版的可下载存档中找到。
我们需要在图表应用程序的构建路径中包含JChart.jar。在Eclipse中,我们通过右键单击项目根文件夹并选择“属性-> Java构建路径->添加JAR”来执行此操作,然后导航到项目文件夹中JChart.lib的位置:
然后,我们创建一个新类,将其称为MainWindow并使它扩展JFrame。这将是我们应用程序的唯一类,它将启动它:
public class MainWindow extends JFrame class MainWindow extends JFrame {{ private static final long serialVersionUID = 1L;private static final long serialVersionUID = 1L; //the main method of the application//the main method of the application public static void main(String[] args)public static void main(String[] args) {{ SwingUtilities.invokeLater(new Runnable()SwingUtilities.invokeLater(new Runnable() {{ public void run()public void run() {{ trytry {{ new MainWindow().setVisible(true);new MainWindow().setVisible(true); }} catch (Exception exp)catch (Exception exp) {{ }} }} }); }); }} }}我们导入将要使用的名称空间:它们既用于图表,也用于标准的AWT和Swing名称空间:
import java.awt.BorderLayout; java.awt.BorderLayout; import java.awt.Color;import java.awt.Color; import java.util.Arrays;import java.util.Arrays; import javax.swing.JFrame;import javax.swing.JFrame; import javax.swing.SwingUtilities;import javax.swing.SwingUtilities; import com.mindfusion.charting.FunctionSeries;import com.mindfusion.charting.FunctionSeries; import com.mindfusion.charting.GridType;import com.mindfusion.charting.GridType; import com.mindfusion.charting.swing.LineChart;import com.mindfusion.charting.swing.LineChart; import com.mindfusion.drawing.Brushes;import com.mindfusion.drawing.Brushes; import com.mindfusion.drawing.DashStyle;import com.mindfusion.drawing.DashStyle; import com.mindfusion.drawing.SolidBrush;import com.mindfusion.drawing.SolidBrush;完成之后,我们就可以创建图表了。
二.折线图
我们创建LineChart是一个单独的方法,我们将从主类的构造函数中调用该方法。
private LineChart initializeChart() LineChart initializeChart() {{ LineChart lineChart = new LineChart(); LineChart lineChart = new LineChart(); .................................... .................................... return lineChart;return lineChart; }}我们要呈现的数学函数图形将通过FunctionSeries类绘制。它的构造函数将定义函数方程的数学表达式作为字符串。然后,它通过JChart中包含的MindFusion.Scripting库对其进行解析。在我们的例子中,我们创建了两个FunctionSeries,它们使用了两个不同的二次方程式:
FunctionSeries series1; series1; FunctionSeries series2; FunctionSeries series2; trytry { { series1 = new FunctionSeries(= new FunctionSeries( "3*x*x+2*x+2", 1000, -5, 5 );"3*x*x+2*x+2", 1000, -5, 5 ); series1.setTitle("Quadratic equation: 3*x*x+2*x+2");.setTitle("Quadratic equation: 3*x*x+2*x+2"); lineChart.getSeries().add(series1);.getSeries().add(series1); //mean value is -2//mean value is -2 series2 = new FunctionSeries(= new FunctionSeries( "-3*x*x+4*x+1", 1000, -5, 5);"-3*x*x+4*x+1", 1000, -5, 5); series2.setTitle("Quadratic equation: -3*x*x+4*x+1");.setTitle("Quadratic equation: -3*x*x+4*x+1"); lineChart.getSeries().add(series2);.getSeries().add(series2); }} catch (Exception e)catch (Exception e) {{ // could not parse the expression// could not parse the expression e.printStackTrace();.printStackTrace(); }}请注意,FunctionSeries的构造函数包含在try-catch块中。如果无法解析方程式,则可以这样做。在这种情况下,将打印异常,以提供有关错误的信息。
提供给FunctionSeries构造函数的其他参数是:1.要为功能图计算的点数;2.计算间隔的开始;3.计算间隔结束。计算包括开始和结束值。
接下来,我们获取用于JFrame的ContentPane,并使用BorderLayout将LineChart扩展到它的整个工作区域上:
protected MainWindow() MainWindow() {{ setDefaultCloseOperation(EXIT_ON_CLOSE);(EXIT_ON_CLOSE); setSize(650, 400);(650, 400); setTitle("Java Swing Library for Charts and Gauges: FunctionSeries"); ("Java Swing Library for Charts and Gauges: FunctionSeries"); //add the chart to the ContentPane//add the chart to the ContentPane getContentPane().add(initializeChart(), BorderLayout.CENTER);().add(initializeChart(), BorderLayout.CENTER); }}现在,如果我们运行示例,即使没有样式,我们也可以看到图表的图形:
我们将使用Java图表库的众多样式功能使图表在视觉上更具吸引力。
三.样式表
我们首先使用getXAxis和getYAxis方法来访问图表的两个主轴并设置其样式。
lineChart.getXAxis().setMinValue(-5.0);.getXAxis().setMinValue(-5.0); lineChart.getXAxis().setMaxValue(5.0);.getXAxis().setMaxValue(5.0); lineChart.getXAxis().setInterval(0.5);.getXAxis().setInterval(0.5); lineChart.getXAxis().setOrigin(0.0);.getXAxis().setOrigin(0.0); lineChart.getXAxis().setTitle("X-axis");.getXAxis().setTitle("X-axis"); lineChart.getYAxis().setMaxValue(30.0);.getYAxis().setMaxValue(30.0); lineChart.getYAxis().setMinValue(-30.0);.getYAxis().setMinValue(-30.0); lineChart.getYAxis().setTitle("Y-axis");.getYAxis().setTitle("Y-axis");我们使用setMinValue和setMaxValue方法指定轴的两端。如果我们未使用setInterval明确指定间隔,则图表将对其进行计算,以便最小和最大之间恰好有10个间隔。我们还使用setTitle指定如何调用轴。
然后,我们指定图表的GridType以及渲染网格时使用的笔触。我们想要交叉网格:
//styling the grid lineChart.setGridType(GridType.Crossed);.setGridType(GridType.Crossed); lineChart.getTheme().setGridLineColor(new Color(192, 192, 192));.getTheme().setGridLineColor(new Color(192, 192, 192)); lineChart.getTheme().setGridLineStyle(DashStyle.Dot);.getTheme().setGridLineStyle(DashStyle.Dot);defaut使用从图表的Series实例的Title中获取的图例标签来绘制图例。我们想隐藏图例的标题并增加图例标签的字体。属性是ShowTitle的LegendRenderer和DataLabelsFontSize。
lineChart.getLegendRenderer().setShowTitle(false);.getLegendRenderer().setShowTitle(false); lineChart.getTheme().setDataLabelsFontSize(12);.getTheme().setDataLabelsFontSize(12);最后,我们需要设置图表系列的颜色。有多种样式可供选择,但在我们的案例中,我们需要使用单色笔触对每个系列进行简单的着色。我们使用CommonSeriesStrokes和CommonSeriesStrokeThicknesses来指定图形线的颜色和粗细。我们还将CommonSeriesFills设置为使用与笔触相同的画笔集。我们不需要通过图表渲染来使用它们,但是图例将它们用于在系列标题之前绘制颜色方块:
lineChart.getTheme().setHighlightStroke(Brushes.Orange);.getTheme().setHighlightStroke(Brushes.Orange); lineChart.getTheme().setCommonSeriesStrokes(.getTheme().setCommonSeriesStrokes( Arrays.asList(Arrays.asList( new SolidBrush( new Color (90, 116, 68 )),new SolidBrush( new Color (90, 116, 68 )), new SolidBrush( new Color (70, 105, 125))));new SolidBrush( new Color (70, 105, 125)))); lineChart.getTheme().setCommonSeriesFills(.getTheme().setCommonSeriesFills( Arrays.asList(Arrays.asList( new SolidBrush( new Color (90, 116, 68 )),new SolidBrush( new Color (90, 116, 68 )), new SolidBrush( new Color (70, 105, 125))));new SolidBrush( new Color (70, 105, 125)))); lineChart.getTheme().setCommonSeriesStrokeThicknesses(.getTheme().setCommonSeriesStrokeThicknesses( Arrays.asList(3.0));Arrays.asList(3.0));这些是图表应用程序的最后几行代码。现在,我们有一个漂亮的二次函数图。这是完整的项目源代码,以及JChart.jar的试用版:
要获得技术支持,请使用Java Swing图表库的讨论区,网址为//mindfusion.eu/Forum/YaBB.pl?board=jchart_dic
关于适用于Java Swing的MindFusion图表和规格库:这是一个本机Java Swing库,适用于绘制多种图表和规格。灵活的API允许组合各种图表部分:轴,图和系列,以创建适合任何业务应用程序特定需求的独特图表:具有多个图的图表,四面八方的轴,在一个图中的不同图表图形等等。所有图表系列都来自基本的“系列”接口,程序员可以将其实现以创建自己的系列类。外观由主题控制,图表外观可自定义。量具库是图表控件的一部分,并提供一组椭圆形和线性量具,可用于创建任何类型的量具(圆形或矩形量具),最多具有三个量尺。该库随附了一组预定义的流行仪表:指南针,时钟,温度计等。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
MindFusion Pack for Java Swing是一款有效的JAVA工具。
MindFusion.Diagramming for WinFormsFlowChart.NET是一款能够帮助你轻松创建流程图和示意图的.NET控件,可以自定义设计样式和图表框颜色。
MindFusion.Reporting for WinForms原生的Windows Forms编程组件,可为任何.NET应用程序提供专业的报表功能
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢