关于java:MindFusion构建Java-Swing中的区域图教程

7次阅读

共计 3691 个字符,预计需要花费 10 分钟才能阅读完成。

[MindFusion.Diagramming for WinForms] 是一个能帮忙你创立工作流和过程图表的.NET 控件;数据库实体关系图表;组织图表;对象档次和关系图表;图表和树。它是基于对象-图表框,表格和箭头类型,将其归类分派给其余并联合成简单的构造。该控件提供超过事后定义的 50 多种图表框,如自定义设计款式和对图表框着色等。

在此博客文章中,咱们将向您展现如何用两个系列构建这个漂亮的面积图。咱们对 Java Swing 和其中的 AreaChart 控件应用 MindFusion 图表库。

**

I. 惯例设置

** 咱们应用 IntelliJ Idea 作为开发图表应用程序的 IDE。您能够应用任何其余 IDE,菜单可能不同,然而步骤雷同。

首先,咱们创立一个新我的项目,并在其中增加一个名为 libs 的文件夹。在那里,咱们复制 JPack.jar 存档,其中蕴含 Pack for Java Swing 汇合中的所有 MindFusion 控件。您不用为该包应用 jar 存档,只需将 jar 与图表控件一起应用,即可从 https://mindfusion.eu/java-ch…。

复制存档后,右键单击该存档,而后从上下文菜单中选择“增加为库”。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/Y… Swing 图表库的探讨板。

对于用于 Java Swing 的 MindFusion 图表和量具库:这是一个本机 Java Swing 库,实用于绘制多种图表和量具类型。灵便的 API 容许组合各种图表局部:轴,图和系列,以创立适宜任何业务应用程序特定需要的独特图表:具备多个图的图表,五湖四海的轴,在一个图中的不同图表图形等等。所有图表系列都来自根本的“系列”接口,程序员能够将其实现以创立本人的系列类。外观由主题管制,图表外观可自定义。量具库是图表控件的一部分,并提供一组椭圆形和线性量具,可用于创立任何类型的量具,圆形或矩形量具(最多三个)。该库随附了一组预约义的风行仪表:指南针,时钟,温度计等。要理解无关 Java Swing 的 MindFusion 图表和仪表的更多详细信息,请拜访:https://mindfusion.eu/java-ch…。

正文完
 0