本文來自http://blog.csdn.net/hellogv/
本文例子代碼,可以到這裡下載:http://download.csdn.net/source/886261
Lwuit就不必介紹了,至於J4LChart,就不得不介紹一下了。。。。。。
J4LChart,提供了完整的Chart圖表,從餅、線、柱等都一網打盡,並且其使用也比較簡單,Chart的式樣可以從TXT文本中讀取,當然,也可以在代碼裡修改啦,不過,用TXT檔案讀取,可以做成模板那樣,想換就換。。。。。。
下面就貼出J4LChart的使用代碼,也好簡單的:
- package com.sun.lwuit.uidemo;
- import com.sun.lwuit.Command;
- import com.sun.lwuit.Form;
- import com.sun.lwuit.events.ActionEvent;
- import com.sun.lwuit.events.ActionListener;
- import com.java4less.rchart.Chart;
- import com.java4less.rchart.ChartLoader;
- import com.java4less.rchart.gc.GraphicsProvider;
- import com.java4less.rchart.lwuit.ChartViewer;
- import com.java4less.rchart.util.Formats;
- import com.sun.lwuit.Display;
- import com.sun.lwuit.animations.Transition3D;
- import com.sun.lwuit.geom.Dimension;
- import com.sun.lwuit.layouts.BorderLayout;
- import java.util.Date;
- public class ChartDemo implements ActionListener {
- public Form form = new Form("J4LChart");
-
- Display display;
- Command nextExample= new Command("Next");
- Command previousExample= new Command("Previous");
- ChartViewer chartCanvas;
- ChartLoader loader;
- String[] examples={"areaChart.txt","areaCurves.txt","axisOnTop.txt","barChart3D.txt","barChart3D.txt","barChart.txt",
- "barImages.txt","bubbleChart.txt","candleStick.txt","combined2Positions.txt","combinedChart.txt","event.txt","linechart3D.txt",
- "linechart.txt","linechartClipping.txt","linechartNULLS.txt","MultiAxis.txt","MultiCharts.txt","patternFilling.txt",
- "piechart3D.txt","PieDrillDown.txt","radarChart.txt","realtime.txt","scatterChart.txt","stackedBar.txt","StackedMultiAxis.txt",
- "subpie1.txt","subpie2.txt","subpie3.txt","targetZones.txt"};
- int currentExample=0;
- /*
- * 初始化Chart,從文本讀取chart圖結構並顯示
- */
- ChartDemo()
- {
- GraphicsProvider.setMode(GraphicsProvider.MODE_LWUIT);
- form.addCommand(previousExample);//上一個
- form.addCommand(nextExample);//下一個
- form.setCommandListener(this);
- chartCanvas=new ChartViewer();//chart視圖
- chartCanvas.setPreferredSize(new Dimension(200,200));//設定大小
- loadChartFromFile("/txt/"+examples[currentExample]);//讀取文本,設定chart
- form.setLayout(new BorderLayout());
- form.addComponent(BorderLayout.CENTER,chartCanvas);
- form.refreshTheme();
- }
- /*
- * 在讀取TXT檔案的同時,同時設定Chart裡面的數值
- */
- private void createRealtimedata(ChartLoader loader) {
- java.util.Date now=java.util.Calendar.getInstance().getTime();
- loader.setParameter("XAXIS_INITIAL_DATE",Formats.formatDate(now,"dd/MM/yyyy hh:mm:ss"));
- // create random data based on the time
- java.util.Calendar cal=java.util.Calendar.getInstance();
- String data1="";
- String data2="";
- for (int i=0;i<9;i++) {
- cal.setTime(new Date(cal.getTime().getTime()-2000));
- if (data1.length()>0) data1="|" + data1;
- data1=""+cal.get(java.util.Calendar.SECOND)+ data1;
- if (data2.length()>0) data2="|" + data2;
- data2=""+(cal.get(java.util.Calendar.SECOND)/6)+ data2;
- }
- loader.setParameter("SERIE_DATA_1",data1);
- loader.setParameter("SERIE_DATA_2",data2);
- }
- /*
- * 讀取TXT檔案並設定chart
- */
- public void loadChartFromFile(String filename) {
- ChartLoader cha=new ChartLoader();
- cha.loadFromFile(this.getClass().getResourceAsStream(filename),true);//讀取文本
- //this.loader=cha;
- //********設定Chart數值
- //createRealtimedata(cha);
- //********設定Chart數值
- Chart c=cha.build(false,false);//建立chart
- chartCanvas.setChart(c);
- chartCanvas.getChart().setSize(chartCanvas.getWidth(),chartCanvas.getHeight());
- chartCanvas.repaintChart();
- form.setTitle(filename);
- }
- public void actionPerformed(ActionEvent arg0) {
- if(arg0.getCommand()==nextExample)//讀取上一個chart(TXT文本)
- {
- chartCanvas.getChart().stopUpdater();
- currentExample++;
- if(currentExample>=examples.length-1)
- currentExample=0;
- form.replace(chartCanvas, chartCanvas,Transition3D.createRotation(500, true));
- loadChartFromFile("/txt/"+examples[currentExample]);
-
- }
- else if(arg0.getCommand()==previousExample)//讀取下一個chart(TXT文本)
- {
- chartCanvas.getChart().stopUpdater();
- currentExample--;
- if(currentExample<=0)
- currentExample=examples.length-1;
- form.replace(chartCanvas, chartCanvas,Transition3D.createRotation(500, false));
- loadChartFromFile("/txt/"+examples[currentExample]);
- }
- }
- }