jfreechart在applet中画动态曲线图

 

 

 

最近因为项目需要,要在Applet中动态显示处理器利用率的曲线图。下面这个例子就是使用Jfreechart在Applet中动态显示曲线图的例子:
在这个例子中使用了两条曲线,请看效果图:

 

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.Timer;

import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.axis.ValueAxis;

import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.time.*;

public class CpuUsage extends JApplet ...{
    private static final long serialVersionUID = 3257566209007171634L;

    private double lastValue1;

    private double lastValue2;

    class DataGenerator extends Timer implements ActionListener ...{
        private static final long serialVersionUID = 3977867288743720504L;

        public void actionPerformed(ActionEvent actionevent) ...{

            double d1 = 0.90000000000000002D + 0.20000000000000001D * Math
                    .random();
            lastValue1 = lastValue1 * d1;

            double d2 = 0.90000000000000002D + 0.20000000000000001D * Math
                    .random();
            lastValue2 = lastValue2 * d2;

            addTotalObservation(lastValue1);
            addFreeObservation(lastValue2);
        }

        DataGenerator() ...{
            super(100, null);
            addActionListener(this);
        }
    }

    public CpuUsage() ...{
         lastValue1 = 100D;
         lastValue2 = 100D;

        total = new TimeSeries("Cpu00", org.jfree.data.time.Millisecond.class);
        //total.setHistoryCount(30000);
        free = new TimeSeries("Cpu01", org.jfree.data.time.Millisecond.class);
        //free.setHistoryCount(30000);

        TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();
        timeseriescollection.addSeries(total);
        timeseriescollection.addSeries(free);
        BasicStroke basicstroke = new BasicStroke(2.0F, 0, 2);

        DateAxis horizontaldateaxis = new DateAxis("Time");
        NumberAxis verticalnumberaxis = new NumberAxis("Value");

        XYLineAndShapeRenderer xylineandshaperenderer = new XYLineAndShapeRenderer(
                true, false);

        xylineandshaperenderer.setSeriesPaint(0, Color.red);
        xylineandshaperenderer.setSeriesPaint(1, Color.green);
        xylineandshaperenderer.setStroke(new BasicStroke(3F, 0, 2));

        JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(
                "处理器利用率", "Time", "Value", timeseriescollection,
                true, true, false);

        XYPlot xyplot = jfreechart.getXYPlot();
        ValueAxis valueaxis = xyplot.getDomainAxis();
        valueaxis.setAutoRange(true);
        valueaxis.setFixedAutoRange(60000D);
        valueaxis = xyplot.getRangeAxis();
        valueaxis.setRange(0.0D, 200D);

        ChartPanel chartpanel = new ChartPanel(jfreechart);
        chartpanel.setPopupMenu(null);
        getContentPane().add(chartpanel);
        (new DataGenerator()).start();
    }

    private void addTotalObservation(double d) ...{

        total.add(new Millisecond(), d);
    }

    private void addFreeObservation(double d) ...{
        free.add(new Millisecond(), d);
    }

    private TimeSeries total;

    private TimeSeries free;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值