我如何运行jfree图小程序? [英] How can I run jfree chart as applet?

查看:258
本文介绍了我如何运行jfree图小程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我没有在java中太多的了解,但希望下面的code作为小程序运行。更多关于此真诚的帮助。

谁能帮我运行此code小程序?这是Jfree图,我想运行它作为一个小程序。建议请。

 包org.jfree.chart.demo;进口java.awt.Color中;
进口java.text.SimpleDateFormat的;进口javax.swing.JPanel中;进口org.jfree.chart.ChartFactory;
进口org.jfree.chart.ChartPanel;
进口org.jfree.chart.JFreeChart;
进口org.jfree.chart.StandardChartTheme;
进口org.jfree.chart.axis.DateAxis;
进口org.jfree.chart.plot.XYPlot;
进口org.jfree.chart.renderer.xy.XYItemRenderer;
进口org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
进口org.jfree.data.time.Month;
进口org.jfree.data.time.TimeSeries;
进口org.jfree.data.time.TimeSeriesCollection;
进口org.jfree.data.xy.XYDataset;
进口org.jfree.ui.ApplicationFrame;
进口org.jfree.ui.RectangleInsets;
进口org.jfree.ui.RefineryUtilities;/ **
 *时间序列图的一个例子。在大多数情况下,默认设置是
 *使用,除了修改的渲染显示填充形状(以及
 *在每个数据点线)。
 * /
公共类TimeSeriesChartDemo1扩展ApplicationFrame {    私有静态最后的serialVersionUID长1L =;    {
        //使用新的阴影生成器功能可用设置一个主题
        // 1.0.14 - 用于向后兼容性的考虑,默认不启用
        ChartFactory.setChartTheme(新StandardChartTheme(JFree /阴影
                真正));
    }    / **
     *演示如何创建一个简单的时间序列的演示应用
     *图。本例中使用的每月数据。
     *
     *参数标题框标题。
     * /
    公共TimeSeriesChartDemo1(字符串名称){
        超(职称);
        ChartPanel chartPanel =(ChartPanel)createDemoPanel();
        chartPanel.set preferredSize(新java.awt.Dimension中(500,270));
        setContentPane(chartPanel);
    }    / **
     *创建的图。
     *
     * @参数数据集的数据集。
     *
     返回:一个图表。
     * /
    私有静态的JFreeChart createChart(XYDataset数据集){        JFreeChart的图表= ChartFactory.createTimeSeriesChart(
            法律和放大器;一般物价信得过单位,//称号
            日期,// x轴的标签
            每单位价格,// y轴的标签
            数据集,//数据
            真的,//建立传奇?
            真的,//生成提示?
            假//生成URL?
        );        chart.setBackgroundPaint(Color.white);        XYPlot剧情=(XYPlot)chart.getPlot();
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setRangeGridlinePaint(Color.white);
        plot.setAxisOffset(新RectangleInsets(5.0,5.0,5.0,5.0));
        plot.setDomainCrosshairVisible(真);
        plot.setRangeCrosshairVisible(真);        XYItemRenderer R = plot.getRenderer();
        如果(R的instanceof XYLineAndShapeRenderer){
            XYLineAndShapeRenderer渲染=(XYLineAndShapeRenderer)R;
            renderer.setBaseShapesVisible(真);
            renderer.setBaseShapesFilled(真);
            renderer.setDrawSeriesLineAsPath(真);
        }        DateAxis轴=(DateAxis)plot.getDomainAxis();
        axis.setDateFormatOverride(新的SimpleDateFormat(MMM-YYYY));        返回图;    }    / **
     *创建一个数据集,包括两个系列月度数据的。
     *
     返回:数据集。
     * /
    私有静态XYDataset createDataset(){        TimeSeries的S1 =新的TimeSeries(L&安培;代欧洲指数信托);
        s1.add(新的月份(2,2001年),181.8);
        s1.add(新的月份(3,2001),167.3);
        s1.add(新的月份(4,2001),153.8);
        s1.add(新的月份(5,2001年),167.6);
        s1.add(新的月份(6,2001年),158.8);
        s1.add(新的月份(7,2001),148.3);
        s1.add(新的月份(8,2001),153.9);
        s1.add(新的月份(9,2001),142.7);
        s1.add(新的月份(10,2001),123.2);
        s1.add(新的月份(11,2001),131.8);
        s1.add(新的月份(12,2001),139.6);
        s1.add(新的月份(1,2002年),142.9);
        s1.add(新的月份(2,2002年),138.7);
        s1.add(新的月份(3,2002),137.3);
        s1.add(新的月份(4,2002),143.9);
        s1.add(新的月份(5,2002年),139.8);
        s1.add(新的月份(6,2002年),137.0);
        s1.add(新的月份(7,2002),132.8);        TimeSeries的S2 =新的TimeSeries(L&放克UK指数信托);
        s2.add(新的月份(2,2001年),129.6);
        s2.add(新的月份(3,2001),123.2);
        s2.add(新的月份(4,2001),117.2);
        s2.add(新的月份(5,2001年),124.1);
        s2.add(新的月份(6,2001年),122.6);
        s2.add(新的月份(7,2001),119.2);
        s2.add(新的月份(8,2001),116.5);
        s2.add(新的月份(9,2001),112.7);
        s2.add(新的月份(10,2001),101.5);
        s2.add(新的月份(11,2001),106.1);
        s2.add(新的月份(12,2001),110.3);
        s2.add(新的月份(1,2002年),111.7);
        s2.add(新的月份(2,2002年),111.0);
        s2.add(新的月份(3,2002),109.6);
        s2.add(新的月份(4,2002),113.2);
        s2.add(新的月份(5,2002年),111.6);
        s2.add(新的月份(6,2002年),108.8);
        s2.add(新的月份(7,2002),101.6);        TimeSeriesCollection数据=新TimeSeriesCollection();
        dataset.addSeries(S1);
        dataset.addSeries(S2);        返回的数据集;    }    / **
     *创建的演示(由SuperDemo.java使用)的面板。
     *
     返回:一个小组。
     * /
    公共静态的JPanel createDemoPanel(){
        JFreeChart的图表= createChart(createDataset());
        ChartPanel面板=新ChartPanel(图)
        panel.setFillZoomRectangle(真);
        panel.setMouseWheelEnabled(真);
        返回面板;
    }    / **
     *起点为示范应用。
     *
     * @参数ARGS忽略。
     * /
    公共静态无效的主要(字串[] args){        TimeSeriesChartDemo1演示=新TimeSeriesChartDemo1(
                时间序列图演示1);
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(演示);
        demo.setVisible(真);    }}


解决方案

您需要扩展Applet类并重写涂料(图形G)方法。关键code是 chart.draw((Graphics2D的)克的getBounds()); 来使用的借鉴图形克图

如果你是新来的Java,你可能想看看在教程

 进口java.awt.Color中;
进口java.awt.Graphics;
进口java.awt.Graphics2D中;
进口java.text.SimpleDateFormat的;进口javax.swing.JApplet中;进口org.jfree.chart.ChartFactory;
进口org.jfree.chart.JFreeChart;
进口org.jfree.chart.axis.DateAxis;
进口org.jfree.chart.plot.XYPlot;
进口org.jfree.chart.renderer.xy.XYItemRenderer;
进口org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
进口org.jfree.data.time.Month;
进口org.jfree.data.time.TimeSeries;
进口org.jfree.data.time.TimeSeriesCollection;
进口org.jfree.data.xy.XYDataset;
进口org.jfree.ui.RectangleInsets;公共类AppletDemo扩展JApplet的{    @覆盖
    公共无效漆(图形G){
        JFreeChart的图表= createChart(createDataset());
        chart.draw((Graphics2D的)克,的getBounds());
    }    私有静态的JFreeChart createChart(XYDataset数据集){        JFreeChart的图表= ChartFactory.createTimeSeriesChart(
            示例表,
            日期,
            值,
            数据集,
            真正,
            真正,
            假
        );        chart.setBackgroundPaint(Color.white);        XYPlot剧情=(XYPlot)chart.getPlot();
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setRangeGridlinePaint(Color.white);
        plot.setAxisOffset(新RectangleInsets(5.0,5.0,5.0,5.0));
        plot.setDomainCrosshairVisible(真);
        plot.setRangeCrosshairVisible(真);        XYItemRenderer R = plot.getRenderer();
        如果(R的instanceof XYLineAndShapeRenderer){
            XYLineAndShapeRenderer渲染=(XYLineAndShapeRenderer)R;
            renderer.setBaseShapesVisible(真);
            renderer.setBaseShapesFilled(真);
            renderer.setDrawSeriesLineAsPath(真);
        }        DateAxis轴=(DateAxis)plot.getDomainAxis();
        axis.setDateFormatOverride(新的SimpleDateFormat(MMM-YYYY));        返回图;    }    私有静态XYDataset createDataset(){        TimeSeries的S1 =新的TimeSeries(系列1);
        s1.add(新月(2,2001年),的Math.random());
        s1.add(新月(3,2001年),的Math.random());
        s1.add(新月(4,2001年),的Math.random());
        s1.add(新月(5,2001年),的Math.random());
        TimeSeries的S2 =新的TimeSeries(系列2);
        s2.add(新月(2,2001年),的Math.random());
        s2.add(新月(3,2001年),的Math.random());
        s2.add(新月(4,2001年),的Math.random());
        s2.add(新月(5,2001年),的Math.random());
        s2.add(新月份(6,2001年),的Math.random());
        TimeSeriesCollection数据=新TimeSeriesCollection();
        dataset.addSeries(S1);
        dataset.addSeries(S2);        返回的数据集;    }
}

I dont have much understanding in java but want the following code to run as applet. Request sincere help on this.

Can anyone help me running this code as applet? This is Jfree chart and i want to run it as an applet. Suggestion please.

package org.jfree.chart.demo;

import java.awt.Color;
import java.text.SimpleDateFormat;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;

/**
 * An example of a time series chart.  For the most part, default settings are
 * used, except that the renderer is modified to show filled shapes (as well as
 * lines) at each data point.
 */
public class TimeSeriesChartDemo1 extends ApplicationFrame {

    private static final long serialVersionUID = 1L;

    {
        // set a theme using the new shadow generator feature available in
        // 1.0.14 - for backwards compatibility it is not enabled by default
        ChartFactory.setChartTheme(new StandardChartTheme("JFree/Shadow",
                true));
    }

    /**
     * A demonstration application showing how to create a simple time series
     * chart.  This example uses monthly data.
     *
     * @param title  the frame title.
     */
    public TimeSeriesChartDemo1(String title) {
        super(title);
        ChartPanel chartPanel = (ChartPanel) createDemoPanel();
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);
    }

    /**
     * Creates a chart.
     *
     * @param dataset  a dataset.
     *
     * @return A chart.
     */
    private static JFreeChart createChart(XYDataset dataset) {

        JFreeChart chart = ChartFactory.createTimeSeriesChart(
            "Legal & General Unit Trust Prices",  // title
            "Date",             // x-axis label
            "Price Per Unit",   // y-axis label
            dataset,            // data
            true,               // create legend?
            true,               // generate tooltips?
            false               // generate URLs?
        );

        chart.setBackgroundPaint(Color.white);

        XYPlot plot = (XYPlot) chart.getPlot();
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setRangeGridlinePaint(Color.white);
        plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
        plot.setDomainCrosshairVisible(true);
        plot.setRangeCrosshairVisible(true);

        XYItemRenderer r = plot.getRenderer();
        if (r instanceof XYLineAndShapeRenderer) {
            XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
            renderer.setBaseShapesVisible(true);
            renderer.setBaseShapesFilled(true);
            renderer.setDrawSeriesLineAsPath(true);
        }

        DateAxis axis = (DateAxis) plot.getDomainAxis();
        axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));

        return chart;

    }

    /**
     * Creates a dataset, consisting of two series of monthly data.
     *
     * @return The dataset.
     */
    private static XYDataset createDataset() {

        TimeSeries s1 = new TimeSeries("L&G European Index Trust");
        s1.add(new Month(2, 2001), 181.8);
        s1.add(new Month(3, 2001), 167.3);
        s1.add(new Month(4, 2001), 153.8);
        s1.add(new Month(5, 2001), 167.6);
        s1.add(new Month(6, 2001), 158.8);
        s1.add(new Month(7, 2001), 148.3);
        s1.add(new Month(8, 2001), 153.9);
        s1.add(new Month(9, 2001), 142.7);
        s1.add(new Month(10, 2001), 123.2);
        s1.add(new Month(11, 2001), 131.8);
        s1.add(new Month(12, 2001), 139.6);
        s1.add(new Month(1, 2002), 142.9);
        s1.add(new Month(2, 2002), 138.7);
        s1.add(new Month(3, 2002), 137.3);
        s1.add(new Month(4, 2002), 143.9);
        s1.add(new Month(5, 2002), 139.8);
        s1.add(new Month(6, 2002), 137.0);
        s1.add(new Month(7, 2002), 132.8);

        TimeSeries s2 = new TimeSeries("L&G UK Index Trust");
        s2.add(new Month(2, 2001), 129.6);
        s2.add(new Month(3, 2001), 123.2);
        s2.add(new Month(4, 2001), 117.2);
        s2.add(new Month(5, 2001), 124.1);
        s2.add(new Month(6, 2001), 122.6);
        s2.add(new Month(7, 2001), 119.2);
        s2.add(new Month(8, 2001), 116.5);
        s2.add(new Month(9, 2001), 112.7);
        s2.add(new Month(10, 2001), 101.5);
        s2.add(new Month(11, 2001), 106.1);
        s2.add(new Month(12, 2001), 110.3);
        s2.add(new Month(1, 2002), 111.7);
        s2.add(new Month(2, 2002), 111.0);
        s2.add(new Month(3, 2002), 109.6);
        s2.add(new Month(4, 2002), 113.2);
        s2.add(new Month(5, 2002), 111.6);
        s2.add(new Month(6, 2002), 108.8);
        s2.add(new Month(7, 2002), 101.6);

        TimeSeriesCollection dataset = new TimeSeriesCollection();
        dataset.addSeries(s1);
        dataset.addSeries(s2);

        return dataset;

    }

    /**
     * Creates a panel for the demo (used by SuperDemo.java).
     *
     * @return A panel.
     */
    public static JPanel createDemoPanel() {
        JFreeChart chart = createChart(createDataset());
        ChartPanel panel = new ChartPanel(chart);
        panel.setFillZoomRectangle(true);
        panel.setMouseWheelEnabled(true);
        return panel;
    }

    /**
     * Starting point for the demonstration application.
     *
     * @param args  ignored.
     */
    public static void main(String[] args) {

        TimeSeriesChartDemo1 demo = new TimeSeriesChartDemo1(
                "Time Series Chart Demo 1");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }

}

解决方案

You need to extend the Applet class and override the paint(Graphics g) method. the key code is chart.draw( (Graphics2D) g,getBounds()); to used the draw the chart on the Graphics g.

If you are new to Java you may want to take a look at the tutorial

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.text.SimpleDateFormat;

import javax.swing.JApplet;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets;

public class AppletDemo extends JApplet {

    @Override
    public void paint(Graphics g) {
        JFreeChart chart = createChart(createDataset());
        chart.draw( (Graphics2D)g,getBounds()); 
    }

    private static JFreeChart createChart(XYDataset dataset) {

        JFreeChart chart = ChartFactory.createTimeSeriesChart(
            "Example Chart",  
            "Date",            
            "Value",   
            dataset,            
            true,               
            true,               
            false              
        );

        chart.setBackgroundPaint(Color.white);

        XYPlot plot = (XYPlot) chart.getPlot();
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setRangeGridlinePaint(Color.white);
        plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
        plot.setDomainCrosshairVisible(true);
        plot.setRangeCrosshairVisible(true);

        XYItemRenderer r = plot.getRenderer();
        if (r instanceof XYLineAndShapeRenderer) {
            XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
            renderer.setBaseShapesVisible(true);
            renderer.setBaseShapesFilled(true);
            renderer.setDrawSeriesLineAsPath(true);
        }

        DateAxis axis = (DateAxis) plot.getDomainAxis();
        axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));

        return chart;

    }

    private static XYDataset createDataset() {

        TimeSeries s1 = new TimeSeries("Series 1");
        s1.add(new Month(2, 2001), Math.random());
        s1.add(new Month(3, 2001), Math.random());
        s1.add(new Month(4, 2001), Math.random());
        s1.add(new Month(5, 2001), Math.random());


        TimeSeries s2 = new TimeSeries("Series 2");
        s2.add(new Month(2, 2001), Math.random());
        s2.add(new Month(3, 2001), Math.random());
        s2.add(new Month(4, 2001), Math.random());
        s2.add(new Month(5, 2001), Math.random());
        s2.add(new Month(6, 2001), Math.random());


        TimeSeriesCollection dataset = new TimeSeriesCollection();
        dataset.addSeries(s1);
        dataset.addSeries(s2);

        return dataset;

    }
}

这篇关于我如何运行jfree图小程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆