使用Jfreechart 在applet中画动态柱图

使用Jfreechart 在applet中画动态柱图

一般的柱状图,都是不是动态的,只是简单的生成一个柱状图片就OK了,在这个例子中,将实现柱行的动态显示。

它和使用Jfreechart显示静态的柱状图,没有什么不一样,注意到代码中,这一段:

CategoryPlot p  =  jfreechart.getCategoryPlot();
        
// 设置新的数据集
        jfreechart.getCategoryPlot().setDataset(createDataset());;
        
// 通知Jfreechart 数据发生了改变,重新绘制柱状图
         if  (jfreechart  !=   null {
            jfreechart.fireChartChanged();
        }

这段代码,先获取一些新的数据集,然后调用CategoryPlot中的SetDataset方法来设置chart的数据集,最后调用chart中的firechartchanged方法,来通知chart刷新视图。运行一下,呵呵,怎么样,很酷吧。


完整的代码如下:

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

package com.sundy.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.
* ;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;

import org.jfree.chart.axis.NumberAxis;
import org.jfree.data.category.DefaultCategoryDataset;

public   class  BarCpuUsage extends JApplet  {
    JFreeChart jfreechart;

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

        
public void actionPerformed(ActionEvent actionevent) {

            addTotalObservation();

        }


        DataGenerator() 
{
            super(
1000null);
            addActionListener(
this);
        }

    }


    
private void addTotalObservation() {
        CategoryPlot p 
= jfreechart.getCategoryPlot();
        
//设置新的数据集
        jfreechart.getCategoryPlot().setDataset(createDataset());;
        
//通知Jfreechart 数据发生了改变,重新绘制柱状图
        if (jfreechart != null{
            jfreechart.fireChartChanged();
        }

    }


    
private static CategoryDataset createDataset() {
        DefaultCategoryDataset defaultcategorydataset 
= new DefaultCategoryDataset();
        String s 
= "System";
        String s1 
= "Nice";
        String s2 
= "User";
        String s3 
= "Total";
        String s4 
= "Cpu01";
        String s5 
= "Cpu02";
        String s6 
= "Cpu03";
        String s7 
= "Cpu04";
        
        
double d1 = (float)(10D * Math.random());
        
double d2 = (float)(10D * Math.random());
        
double d3 = (float)(10D * Math.random());
        
double d4 = (float)(10D * Math.random());
        
        defaultcategorydataset.addValue(d1, s, s3);
        defaultcategorydataset.addValue(d2, s, s4);
        defaultcategorydataset.addValue(d3, s, s5);
        defaultcategorydataset.addValue(d4, s, s6);
        defaultcategorydataset.addValue(5D, s, s7);
        defaultcategorydataset.addValue(5D, s1, s3);
        defaultcategorydataset.addValue(7D, s1, s4);
        defaultcategorydataset.addValue(6D, s1, s5);
        defaultcategorydataset.addValue(8D, s1, s6);
        defaultcategorydataset.addValue(4D, s1, s7);
        defaultcategorydataset.addValue(4D, s2, s3);
        defaultcategorydataset.addValue(3D, s2, s4);
        defaultcategorydataset.addValue(2D, s2, s5);
        defaultcategorydataset.addValue(3D, s2, s6);
        defaultcategorydataset.addValue(6D, s2, s7);
        
return defaultcategorydataset;
    }


    
public void init() {
        CategoryDataset categorydataset 
= createDataset();
        jfreechart 
= ChartFactory.createBarChart("处理器利用率",
                
"节点名称""Value", categorydataset, PlotOrientation.VERTICAL,
                
truetruefalse);
        jfreechart.setBackgroundPaint(Color.white);
        CategoryPlot categoryplot 
= jfreechart.getCategoryPlot();
        categoryplot.setBackgroundPaint(Color.lightGray);
        categoryplot.setDomainGridlinePaint(Color.white);
        categoryplot.setDomainGridlinesVisible(
true);
        categoryplot.setRangeGridlinePaint(Color.white);
        NumberAxis numberaxis 
= (NumberAxis) categoryplot.getRangeAxis();
        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        BarRenderer barrenderer 
= (BarRenderer) categoryplot.getRenderer();
        barrenderer.setDrawBarOutline(
false);
        GradientPaint gradientpaint 
= new GradientPaint(0.0F0.0F, Color.blue,
                
0.0F0.0Fnew Color(0064));
        GradientPaint gradientpaint1 
= new GradientPaint(0.0F0.0F,
                Color.green, 
0.0F0.0Fnew Color(0640));
        GradientPaint gradientpaint2 
= new GradientPaint(0.0F0.0F, Color.red,
                
0.0F0.0Fnew Color(1641660));
        barrenderer.setSeriesPaint(
0, gradientpaint);
        barrenderer.setSeriesPaint(
1, gradientpaint1);
        barrenderer.setSeriesPaint(
2, gradientpaint2);
        barrenderer.setItemMargin(
0.05);
    
        CategoryAxis categoryaxis 
= categoryplot.getDomainAxis();
        categoryaxis.setCategoryLabelPositions(CategoryLabelPositions
                .createUpRotationLabelPositions(
0.52359877559829882D));

        ChartPanel chartpanel 
= new ChartPanel(jfreechart, false);
        chartpanel.setPreferredSize(
new Dimension(500270));

        getContentPane().add(chartpanel);
        (
new DataGenerator()).start();

    }

    
public void paint(Graphics g) {

        
if (jfreechart != null{
            jfreechart.draw((Graphics2D) g, getBounds());
            
        }

    }


    
public void destroy() {
    }

}

posted on 2005-08-12 18:02 sundy 阅读(812) 评论(2)  编辑 收藏 引用 所属分类: Java  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值