使用Jfreechart 在applet中画动态曲线图

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

程序很简单,只是简单的将Jfreechart在Application上的曲线图的Demo转到Applet的上,代码如下:

package  com.sundy.applet;

/**
 * 
 *  TODO 使用Jfreechart 在applet中画动态曲线图
 *
 *  
@author 刘正伟(sundy)
 *  
@see mailto:sundy26@126.com
 *  
@version 1.0
 *  
@since 2005-6-22
 * 
 *  修改记录:
 *  日期              修改人                 描述
 *  -----------------------------------------------------------------------
 
*/


/**
 * 
@author sundy
 *
 
*/


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(100null);
            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.0F02);

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

        XYLineAndShapeRenderer xylineandshaperenderer 
= new XYLineAndShapeRenderer(
                
truefalse);

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

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

        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、付费专栏及课程。

余额充值