在此博客文章中,我们将向您展示如何用两个系列构建这个美丽的面积图。我们对Java Swing和其中的AreaChart控件使用MindFusion图表库。

I.常规设置

我们使用IntelliJ Idea作为开发图表应用程序的IDE。您可以使用任何其他IDE,菜单可能不同,但是步骤相同。

首先,我们创建一个新项目,并在其中添加一个名为libs的文件夹。在那里,我们复制JPack.jar存档,其中包含Pack for Java Swing集合中的所有MindFusion控件。您不必为该包使用jar存档,只需将jar与图表控件一起使用,即可从https://mindfusion.eu/java-chart.html下载。

复制存档后,右键单击该存档,然后从上下文菜单中选择“添加为库”。IDE将把jar文件添加到项目的构建路径。当系统询问您要将jar添加到何处时,请确保指定整个项目:

之后,我们创建一个新类,我们将其称为AreaChart并将其扩展为JFrame。这将是我们应用程序的主要且唯一的类。在其主要方法中,我们添加了用于创建和启动窗口的默认Java代码。然后,我们创建AreaChart类的新实例:

public class AreaChart extends JFrame

{

public static void main(String[] args) {

JFrame f = new JFrame();

f.setTitle("MindFusion.Charting sample: Area Chart");

f.setSize(800, 600);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

com.mindfusion.charting.swing.AreaChart chart =

new com.mindfusion.charting.swing.AreaChart();

f.getContentPane().setLayout(new BorderLayout());

f.getContentPane().add(chart, BorderLayout.CENTER);

f.setVisible(true);

}

二.图表数据和系列

图表的数据由Series2D类的两个实例指定。此类在构造函数中采用三个列表作为参数:带有数据的数组(用于数据点的X坐标),带有数据的数组(用于数据点的Y坐标)和带有标签的列表。带有标签的列表可以为空。

// create sample data series

Series2D series1 = new Series2D(

Arrays.asList(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0),

Arrays.asList(25.0, 35.0, 24.0, 26.0, 27.0, 19.0, 29.0, 19.0, 27.0, 23.0, 17.0, 15.0),

labels);

标签列表是通过以下方式定义的:

List labels = Arrays.asList(

"Jan", "Feb", "Mar", "Apr", "May", "Jun",

"Jul", "Aug", "Sept", "Oct", "Nov", "Dec"

);

我们不希望标签出现在数据点,这是呈现这些标签的默认方式。幸运的是,Series2D类公开了一个名为setSupportedLabels的方法,该方法使我们可以指定应在何处应用这些标签。此方法的参数是LabelKinds枚举的一个实例,该实例公开了可以在图表上找到的所有类型的标签的成员。成员允许按位组合。

在我们的例子中,我们想在X轴上渲染标签。因此,我们以以下简单方式设置它们:

series1.setSupportedLabels(LabelKinds.XAxisLabel);

我们还必须使用setTitle方法为我们的系列指定标题。标题将显示为图例中系列的项目。我们将在图表上显示图例,因此我们需要指定与该系列相对应的标签。

最后,我们必须将此Series2D添加到图表的Series集合中。我们使用getSeries获取集合并添加新创建的系列:

chart.getSeries().add(series1);

第二个系列与第一个系列的区别仅在于Y数据。它还没有标签。我们在X轴上不需要两个标签列表-一个就足够了。

完成数据设置后,我们可以运行应用程序来查看图表:

该图表是正确的,但看起来并不十分吸引人。我们需要对其进行样式设置。

三.图表样式

我们使用Axis类的方法微调图表轴的外观。使用getXAxis和getYAxis方法访问负责两个轴的Axis对象。我们使用setMaxValue和setInterval方法来调整两个轴的间隔。这也影响最大值。我们还使用setTitle隐藏轴标题-我们指定一个空字符串。

chart.getYAxis().setInterval(5.0);

chart.getYAxis().setMaxValue(50.0);

chart.getXAxis().setMaxValue(12.0);

chart.getXAxis().setInterval(1.0);

chart.getXAxis().setTitle("");

chart.getYAxis().setTitle("");

然后我们自定义网格。我们想要带有虚线的水平网格。我们使用GridType枚举的“ Horizontal”成员。它作为图表的setGridType方法的参数提供。我们指定用虚线setGridLineStyle和使用setGridLineColor为网格线指定颜色。

chart.setGridType(GridType.Horizontal);

chart.getTheme().setGridLineColor(new Color(190, 190, 190));

chart.getTheme().setGridLineStyle(DashStyle.Dash);

我们还需要调整图表标签的字体大小:

chart.setShowXCoordinates(false);

chart.getTheme().setAxisLabelsFontSize(14);

chart.getTheme().setDataLabelsFontSize(14);

图表具有许多属性,可用于自定义其上使用的所有字体类型。他们是主题类的成员。每个图表类型都有一个主题对象,可以通过getTheme访问

最后,我们需要考虑区域图形的颜色。我们将使用Theme的setCommonSeriesFills方法为每个Series指定颜色。commonSeriesFills和strokes属性使用画笔指定列表,这些画笔为每个系列的内部和轮廓着色。

chart.getTheme().setCommonSeriesFills(

Arrays.asList(

new SolidBrush( new Color (102, 154, 204, 190)),

new SolidBrush(new Color (156, 170, 198, 190))));

chart.getTheme().setCommonSeriesStrokes(

Arrays.asList(

new SolidBrush( new Color (28, 58, 88))));

chart.getTheme().setCommonSeriesStrokeThicknesses(

Arrays.asList(5.0));

这些是我们AreaChart上的最后一个自定义项。最终图表已准备就绪。

要获得技术支持,请使用https://mindfusion.eu/Forum/YaBB.pl?board=jchart_dic上Java Swing图表库的讨论板。

关于用于Java Swing的MindFusion图表和量具库:这是一个本机Java Swing库,适用于绘制多种图表和量具类型。灵活的API允许组合各种图表部分:轴,图和系列,以创建适合任何业务应用程序特定需求的独特图表:具有多个图的图表,四面八方的轴,在一个图中的不同图表图形等等。所有图表系列都来自基本的“系列”接口,程序员可以将其实现以创建自己的系列类。外观由主题控制,图表外观可自定义。量具库是图表控件的一部分,并提供一组椭圆形和线性量具,可用于创建任何类型的量具,圆形或矩形量具(最多三个)。该库随附了一组预定义的流行仪表:指南针,时钟,温度计等。要了解有关Java Swing的MindFusion图表和仪表的更多详细信息,请访问:https://mindfusion.eu/java-chart.html。

java awt区域,构建Java Swing中的区域图相关推荐

  1. java 鼠标悬停事件_java swing中如何实现对于鼠标监听悬停事件

    展开全部 import java.awt.Container; import java.awt.Dimension; import java.awt.event.ActionEvent; import ...

  2. import java.awt.BorderLayout;_import java.awt

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.awt.AWTException; import java.awt.BorderLayout; import java.awt.C ...

  3. java awt point_100分 解决java import java.awt.Point;import java.awt.Rectangle;

    100分 解决java import java.awt.Point;import java.awt.Rectangle; 100分 解决java import java.awt.Point; impo ...

  4. import java.awt.BorderLayout;_import java.awt.BorderLayout cmd编译出错

    展开全部 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt ...

  5. java集合刷新面板_java Swing 中 面板刷新的问题。。求指教 。 高手在哪里啊。。。...

    javaswing中repaint()刷新面板的问题 求指教...代码如下:运行后点击按钮1,面板没刷新,需要缩放面板才能看到新的面板.我用计时器或则线程来调用repaint(),好像都没... ja ...

  6. java 事件分发线程_深入浅出Java多线程(2)-Swing中的EDT(事件分发线程) [转载]...

    本系列文章导航 本文主要解决的问题是: 如何使其Swing程序只能运行一个实例? 抛开Swing, 我们的程序是通过java 命令行启动一个进程来执行的,该问题也就是说要保证这个进程的唯一性,当然如果 ...

  7. java awt 简单计算器,JAVA Swing 开发简易计算器(上)

    开发一个简易的计算器我们主要分为两大部分:图形界面设计与具体功能实现.这篇文章讲图形界面设计,下篇讲具体功能实现. 代码下载:https://github.com/taifus/Java_Calcul ...

  8. java list控件_java Swing中对于JList控件的使用(一)

    package com.robert; import javax.swing.*; import java.awt.*; /** * Created by IntelliJ IDEA. * User: ...

  9. 用gradle启动java项目_构建Java项目

    #构建Java项目# 上一节我们简要介绍了如何编写一个单机的To Do应用,接下来要打包部署成可执行的应用,我们需要编译源代码,生成的class文件需要打包到JAR文件中.JDK提供了javac 和j ...

  10. java web mvc_构建Java Web应用程序时遵循MVC的三个步骤

    java web mvc 第1步 做 始终通过servlet / action bean处理URL(POST表单,单击链接等),而不是通过JSP处理 为什么 ActionBeans(无论某些框架调用那 ...

最新文章

  1. LeetCode 207. Course Schedule--有向图找环--面试算法题--DFS递归,拓扑排序迭代--Python
  2. 【Git】Git 分支管理 ( 解决分支合并冲突 | 创建并切换分支 git switch -c feature1 | 修改 feature1 分支并提交 | 修改 master 主版本并提交 )
  3. PPT 下载 | 神策数据杜明翰:打造趁手、好用的标签用户画像系统
  4. python判断对象是否实例化_python中如何判断class当前有哪些实例?
  5. Zju2112 Dynamic Rankings(树状数组套可持久化权值线段树)
  6. hue集成mysql报错_hue集成hive访问报database is locked
  7. android 4实例分析,OpenGL Shader实例分析(4)闪光效果
  8. 为什么我们应该学马化腾,而不是马云
  9. 兄弟连php课程大纲,LAMP兄弟连PHP课程学习笔记 第四天 流程控制分支语句
  10. hdu5833 Zhu and 772002 (高斯消元的简单应用)
  11. UE4 C++编程入门整理
  12. Laravel SQL查询中first、pluck、lists方法的使用
  13. java的键盘输入交互
  14. 2021年低压电工考试题及低压电工报名考试
  15. bugku---game1
  16. EasyExcel与EasyPoi性能对比
  17. ps如何绘制一个竖虚线圆
  18. 福建农商银行计算机类笔试题目,2014年福建农商银行考试计算机模拟题
  19. MySQL 基础 -- 多表关系(一对一、1对多(多对一)、多对多)、多表查询(内连接、外连接、自连接、子查询(嵌套查询)、联合查询 union)、笛卡儿积
  20. UART串口协议基础1

热门文章

  1. vue视频文本编辑器html,Vue 轻量级富文本编辑器 Vue-Quill-Editor
  2. java实现对称加密—数据库密码加解密
  3. 【问题2】如何保证缓存与数据库的双写一致性?
  4. Nginx配置基础认证
  5. qsor快排序以及cmp函数
  6. Spring框架之演示JDBC的模板类
  7. 走迷宫(二):在XX限制条件下,是否走得出
  8. cf701B Cells Not Under Attack
  9. MarkDown 语法初步
  10. Linux下screen的简单介绍