回転:レポートプラグインJFreeChartの使用
17174 ワード
別の例のリンクアドレスは、2つの参照を組み合わせることができます.http://blog.csdn.net/pzhtpf/article/details/7600100
前提:必要な2つのjarファイル、jcommon-バージョン番号をインポートします.jar,jfreechart-バージョン番号.jar.
添付ファイル:jfreechart-1.0.13
注意:ダウンロードしたJfreechartバージョンはあまり高くないでください.新しいバージョンは中国語の表示に問題があります.
例1:比較的簡単なアプリケーションバージョンのクッキー図
実行結果は次のとおりです.
注意:グラフは次の3つのセクションで構成されています.
例2:より明確な構造のアプリケーションバージョンの柱状図で、論理を各関数に分割します.
実行結果は次のとおりです.
例3:チャートをJPEG形式の画像に変換するアプリケーション
実行結果は以下の通りで、このプロジェクトのルートディレクトリの下にJPEG形式の画像が生成され、webrootディレクトリの下ではないことに注意します.
インスタンス4:インスタンス3のように生成されたピクチャをJSPページに埋め込む.
1.web.xmlには、以下の構成情報が加える.
2.jfreeChart.jsp
次の結果が表示されます.
例5:運動項目への投票をシミュレートし、投票JFreeChartグラフを表示する
原理:サーバが再起動しない場合、session結果は依然としてシミュレーション投票機能を保存し、struts 2-jfreechart-plugin-バージョン番号を使用する.JArプラグインは、グラフオブジェクトをactionで自動的にレンダリングします.
注意:struts 2-jfreechart-plugin-バージョン番号を追加するのを忘れないでください.jarは工事中です.
1.Actionクラス:
2.Jspページ
3.struts.xmlの構成
注意:ここのバッグは2つ継承します.ネット上でよく使われる方法はstruts 2-jfreechart-plugin-バージョン番号です.JArプラグインを解凍し、struts-plugin-xmlのpackageを変更してstruts-defaultパッケージに継承させて再パッケージし、actionのpackageパッケージをextends=jfreechart-defaultに構成するのは面倒だと感じます.やはり2つのバッグを直接引き継ぐのが便利です.
ここでタグにJSPページを追加してジャンプする必要はなく、chartで指定されたChartResultクラスに直接ジャンプして処理します.
struts-plugin-xmlファイルの内容を添付します.
最終ページに結果が表示されます.
前提:必要な2つのjarファイル、jcommon-バージョン番号をインポートします.jar,jfreechart-バージョン番号.jar.
添付ファイル:jfreechart-1.0.13
注意:ダウンロードしたJfreechartバージョンはあまり高くないでください.新しいバージョンは中国語の表示に問題があります.
例1:比較的簡単なアプリケーションバージョンのクッキー図
package com.test.jfreechart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class JFreeChartTest
{
public static void main(String[] args)
{
DefaultPieDataset dpd=new DefaultPieDataset(); //
dpd.setValue(" ", 25); //
dpd.setValue(" ", 25);
dpd.setValue(" ", 45);
dpd.setValue(" ", 10);
JFreeChart chart=ChartFactory.createPieChart(" ",dpd,true,true,false);
// API , , , Legend, , URL
ChartFrame chartFrame=new ChartFrame(" ",chart);
//chart Java ,ChartFrame java Jframe 。 , 。
chartFrame.pack(); //
chartFrame.setVisible(true);//
}
}
実行結果は次のとおりです.
注意:グラフは次の3つのセクションで構成されています.
例2:より明確な構造のアプリケーションバージョンの柱状図で、論理を各関数に分割します.
package com.test.jfreechart;
import java.awt.Font;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
public class JFreeChartTest2 extends ApplicationFrame
{
public JFreeChartTest2(String title)
{
super(title);
this.setContentPane(createPanel()); // Java panel
}
public static CategoryDataset createDataset() //
{
DefaultCategoryDataset dataset=new DefaultCategoryDataset();
dataset.setValue(10,"a"," ");
dataset.setValue(20,"b"," ");
dataset.setValue(40,"c"," ");
dataset.setValue(15,"d"," ");
return dataset;
}
public static JFreeChart createChart(CategoryDataset dataset) //
{
JFreeChart chart=ChartFactory.createBarChart("hi", " ",
" ", dataset, PlotOrientation.VERTICAL, true, true, false); // JFreeChart
chart.setTitle(new TextTitle(" ",new Font(" ",Font.BOLD+Font.ITALIC,20)));// , “hi”
CategoryPlot plot=(CategoryPlot)chart.getPlot();// , plot
CategoryAxis categoryAxis=plot.getDomainAxis();//
categoryAxis.setLabelFont(new Font(" ",Font.BOLD,12));//
return chart;
}
public static JPanel createPanel()
{
JFreeChart chart =createChart(createDataset());
return new ChartPanel(chart); // chart Panel ,ChartPanel Jpanel
}
public static void main(String[] args)
{
JFreeChartTest2 chart=new JFreeChartTest2(" ");
chart.pack();//
chart.setVisible(true);
}
}
実行結果は次のとおりです.
例3:チャートをJPEG形式の画像に変換するアプリケーション
package com.test.jfreechart;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
public class JFreeChartTest3
{
public static void main(String[] args) throws Exception
{
JFreeChart chart=ChartFactory.createPieChart(" ",getDataset(),true,true,false);
chart.setTitle(new TextTitle(" ",new Font(" ",Font.BOLD+Font.ITALIC,20)));
LegendTitle legend=chart.getLegend(0);// Legend
legend.setItemFont(new Font(" ",Font.BOLD,14));
PiePlot plot=(PiePlot) chart.getPlot();// Plot
plot.setLabelFont(new Font(" ",Font.BOLD,16));
OutputStream os = new FileOutputStream("company.jpeg");// , FileOutputStream 。
ChartUtilities.writeChartAsJPEG(os, chart, 1000, 800);
// application , chart JPEG 。 3 , 4 。
os.close();//
}
private static DefaultPieDataset getDataset()
{
DefaultPieDataset dpd=new DefaultPieDataset(); //
dpd.setValue(" ", 25); //
dpd.setValue(" ", 25);
dpd.setValue(" ", 45);
dpd.setValue(" ", 10);
return dpd;
}
}
実行結果は以下の通りで、このプロジェクトのルートディレクトリの下にJPEG形式の画像が生成され、webrootディレクトリの下ではないことに注意します.
インスタンス4:インスタンス3のように生成されたピクチャをJSPページに埋め込む.
1.web.xmlには、以下の構成情報が加える.
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>
org.jfree.chart.servlet.DisplayChart <!-- -->
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/DisplayChart</url-pattern>
</servlet-mapping>
2.jfreeChart.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="org.jfree.data.general.DefaultPieDataset,org.jfree.chart.ChartFactory
,org.jfree.chart.JFreeChart,org.jfree.chart.servlet.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<%
DefaultPieDataset dpd = new DefaultPieDataset();
dpd.setValue(" ", 25);
dpd.setValue(" ", 25);
dpd.setValue(" ", 45);
dpd.setValue(" ", 10);
JFreeChart chart = ChartFactory.createPieChart(" ",dpd, true, false, false);
String fileName = ServletUtilities.saveChartAsPNG(chart,800,600,session);
//ServletUtilities web , , , (tomcat) (temp)
String url = request.getContextPath() + "/DisplayChart?filename=" + fileName;
// , /DisplayChart <url-pattern>
%>
<img src="<%= url %>" width="800" height="600">
</body>
</html>
次の結果が表示されます.
例5:運動項目への投票をシミュレートし、投票JFreeChartグラフを表示する
原理:サーバが再起動しない場合、session結果は依然としてシミュレーション投票機能を保存し、struts 2-jfreechart-plugin-バージョン番号を使用する.JArプラグインは、グラフオブジェクトをactionで自動的にレンダリングします.
注意:struts 2-jfreechart-plugin-バージョン番号を追加するのを忘れないでください.jarは工事中です.
1.Actionクラス:
package com.test.action;
import java.awt.Font;
import java.util.List;
import java.util.Map;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class ViewResultAction extends ActionSupport
{
private JFreeChart chart;// chart,
private List<String> interest; //struts , List
public JFreeChart getChart()//getChart() ,setChart() .
{ // action chart get , chart , plot ; legend
chart = ChartFactory.createBarChart(" ", " ", " ", this
.getDataset(), PlotOrientation.VERTICAL, false, false, false);
chart.setTitle(new TextTitle(" ",new Font(" ",Font.BOLD,22)));
CategoryPlot plot = (CategoryPlot)chart.getPlot();
CategoryAxis categoryAxis = plot.getDomainAxis();
categoryAxis.setLabelFont(new Font(" ",Font.BOLD,22));
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);//
NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
numberAxis.setLabelFont(new Font(" ",Font.BOLD,22));
return chart;
}
public List<String> getInterest()
{
return interest;
}
public void setInterest(List<String> interest)
{
this.interest = interest;
}
@Override
public String execute() throws Exception
{
return SUCCESS;
}
@SuppressWarnings("unchecked")
private void increaseResult(List<String> list)// action , model
{ //
ActionContext context = ActionContext.getContext();//struts servlet
Map map = context.getApplication();
for (String str : list)
{
if (null == map.get(str))//
{
map.put(str, 1);
}
else
{
map.put(str, (Integer) map.get(str) + 1);
}
}
}
@SuppressWarnings("unchecked")
private CategoryDataset getDataset() // 。
{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
this.increaseResult(this.getInterest());
ActionContext context = ActionContext.getContext();
Map map = context.getApplication();
dataset.setValue((Integer) map.get("football"), "", " ");//
dataset.setValue((Integer) map.get("basketball"), "", " ");
dataset.setValue((Integer) map.get("volleyball"), "", " ");
dataset.setValue((Integer) map.get("badminton"), "", " ");
return dataset;
}
}
2.Jspページ
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<h1><font color="blue"> </font></h1>
<s:form action="viewResult">
<s:checkbox name="interest" label=" " fieldValue="football"></s:checkbox>
<s:checkbox name="interest" label=" " fieldValue="basketball"></s:checkbox>
<s:checkbox name="interest" label=" " fieldValue="volleyball"></s:checkbox>
<s:checkbox name="interest" label=" " fieldValue="badminton"></s:checkbox>
<!--
<s:checkboxlist list="#{'computer':' ','math':' '}" name="interest" label=" " labelposition="top"></s:checkboxlist>
-->
<s:submit value=" "></s:submit>
</s:form>
</body>
</html>
3.struts.xmlの構成
<package name="struts2" extends="struts-default,jfreechart-default">
注意:ここのバッグは2つ継承します.ネット上でよく使われる方法はstruts 2-jfreechart-plugin-バージョン番号です.JArプラグインを解凍し、struts-plugin-xmlのpackageを変更してstruts-defaultパッケージに継承させて再パッケージし、actionのpackageパッケージをextends=jfreechart-defaultに構成するのは面倒だと感じます.やはり2つのバッグを直接引き継ぐのが便利です.
<action name="viewResult" class="com.test.action.ViewResultAction"> <result name="success" type="chart"> <param name="height">600</param> <param name="width">800</param> </result> </action>
ここで
struts-plugin-xmlファイルの内容を添付します.
<struts>
<package name="jfreechart-default">
<result-types>
<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
<param name="height">150</param>
<param name="width">200</param>
</result-type>
</result-types>
</package>
</struts>
最終ページに結果が表示されます.