3.全部图表
3.1输出图片
编码
经过编码器对象加载org.krysalis.jcharts.encoders包, jCharts输出下格式:PNG, JPEG, 和 SVG。这些编码器的每一个都有一个编码图表的方法:
编码(Chart chart, OutputStream outputStream) –一个你能经过有这个方法的的任何输出流工具,例如文件输出流,普通的版本。
对PNG和JPEG的支持是有 JSDK 1.4提供的。总之,你需要 JSDK 1.4去用 提供的jCharts t图片编码器。然而,现在有一个保留支持旧的JDK's的JPEGEncoder13类。
对SVG的支持是由 the Apache XML工程提供的:Batik。请访问:http://xml.apache.org/batik/
来自一个Servlet的图片
有一个帮助类,org.krysalis.jcharts.encoders.ServletEncoderHelper,另外,来自Servlets和JSP的输出表。
在这个能输出jCharts支持格式的任何一个图片的类,有许多的方法,为浏览器增加了自动装入图表MIME类型有助于浏览器知道怎样正确的显示图片。
我不知道关于你的情况,但是我总是能强记不同文件格式的MIME类型。
提示:
一些用户尝试吧一个图表图片输出到磁盘然后通过流传回浏览器。这是没必要的!你可以利用上面提及的帮助类把图片由流输出到浏览器,将避免昂贵的文件输入输出。
备注:
这个帮助类之所以会产生因为可以避免依赖与J2EE jard的编译时间。如果你简单地在the xxxEncoder类上重载代码的方法,编译器会为每一个重载的注册试着加载所有涉及的类。
没有X Server的图片
JSDK 1.4+ 可以允许jCharts运行在一个虚拟存储缓冲区的一个headless无*的空间上。在java命令行设置以下指定的属性:-Djava.awt.headless=true或者在你的代码里一个缺少弹性的位置:System.setProperty("java.awt.headless","true");
然而,如果你运行以前的JDK1.4,你不得不用一个虚拟存储缓冲区,如:xvfb。
图表在Swing里应用
你同样在一个Swing应用里面用jcharts。以下的代码来自org.krysalis.jcharts.demo.swing包的 SwingDemo类。这里,你简单地设置Swing组件的图形对象,变成图表和调用render()
import org.krysalis.jcharts.chartData.PieChartDataSet;
import org.krysalis.jcharts.properties.PropertyException;
import org.krysalis.jcharts.properties.PieChart2DProperties;
import org.krysalis.jcharts.properties.ChartProperties;
import org.krysalis.jcharts.properties.LegendProperties;
import org.krysalis.jcharts.nonAxisChart.PieChart2D;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowEvent;
public class SwingDemo extends JFrame
{
private JPanel panel;
public SwingDemo() throws ChartDataException, PropertyException
{
initComponents();
}
private void initComponents() throws ChartDataException,PropertyException
{
this.setSize( 500, 500 );
this.panel = new JPanel( true );
this.panel.setSize( 500, 500 );
this.getContentPane().add( this.panel );
this.pieChart2DProperties = new PieChart2DProperties();
this.legendProperties= new LegendProperties();
this.chartProperties= new ChartProperties();
this.setVisible( true );
addWindowListener( new java.awt.event.WindowAdapter()
{
public void windowClosing( WindowEvent windowEvent )
{
exitForm( windowEvent );
}
}
);
}
/************************************************************************
*
* @param graphics
***********************************************************************/
public void paint( Graphics graphics )
{
try {
String[] labels = {"BMW", "Audi", "Lexus"};
String title = "Cars that Own";
Paint[] paints = {Color.blue, Color.gray, Color.red};
double[] data = {50d, 30d, 20d};
PieChartDataSet pieChartDataSet = new PieChartDataSet( title, data,
labels, paints, this.pieChart2DProperties );
Dimension dimension= this.panel.getSize();
PieChart2D pieChart2D = new PieChart2D( pieChartDataSet,
this.legendProperties,
this.chartProperties,
(int) dimension.getWidth(),
(int) dimension.getHeight() );
//***** BEGIN SWING SPECIFIC CODE *******************************
pieChart2D.setGraphics2D( (Graphics2D) this.panel.getGraphics() );
pieChart2D.render();
//***** END SWING SPECIFIC CODE *********************************
}
catch( ChartDataException chartDataException ) {
chartDataException.printStackTrace();
}
catch( PropertyException propertyException ) {
propertyException.printStackTrace();
}
}
3.2图表标题
显示一个标题
你能有一个 DataSeries和 PieChartDataSet构造方法的一个参数显示你的图表的标题。在