如题:生成的K线图代码:Kline.jsp
<!---->
<%@ page language="java" contentType="image/png;charset=GB2312"
import="java.awt.*"
import="java.text.*"
import="java.util.*"
import="org.jfree.chart.*"
import="org.jfree.chart.axis.*"
import="org.jfree.chart.servlet.*"
import="org.jfree.chart.plot.*"
import="org.jfree.chart.renderer.*"
import="org.jfree.chart.renderer.category.*"
import="org.jfree.chart.axis.*"
import="org.jfree.chart.entity.*"
import="org.jfree.chart.labels.*"
import="org.jfree.chart.title.*"
import="org.jfree.chart.urls.*"
import="org.jfree.chart.renderer.xy.*"
import="org.jfree.chart.annotations.*"
import="org.jfree.data.*"
import="org.jfree.date.DateUtilities"
import="org.jfree.data.xy.*"
import="org.jfree.data.time.*"
import="org.jfree.data.category.*"
import="org.jfree.date.SerialDate"
import="org.jfree.ui.*"
import="org.jfree.util.*"
import="java.sql.Connection"
import="java.sql.DriverManager"
import="java.sql.Statement"
import="java.sql.ResultSet"
import="org.jfree.data.time.ohlc.OHLCSeries"
    import="org.jfree.data.time.ohlc.OHLCSeriesCollection"
%>
<%!
public JFreeChart createChart(OHLCDataset dataset) 
{
   // 创建图表对象
   JFreeChart chart = ChartFactory.createCandlestickChart
   (
            "X邮票K线图",
            "2007年8月", 
            "邮票价格(元/张)",
            dataset, 
            false

        );
    return chart;
}
%>
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dvcs517";//mis是数据库名称
    String user="sa";//用户名
    String password="13391220222";//用户密码
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement();
    String sql="select * from kline order by id";//查询数据库
    ResultSet rs=stmt.executeQuery(sql);   
    TimeSeries timeseries = new TimeSeries("日线图",Day.class);
    final OHLCSeriesCollection seriesCollection = new OHLCSeriesCollection();//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到      
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
    while(rs.next())
    {  
       float y0=rs.getFloat("open_value");
       float y1=rs.getFloat("max_value");
       float y2=rs.getFloat("min_value");
       float y3=rs.getFloat("close_value");
       float y4=rs.getFloat("volume_value");
       String s=rs.getString("stock_date");     
       int x=Integer.parseInt(s.substring(0,4));   
       int y=Integer.parseInt(s.substring(5,7));   
       int z=Integer.parseInt(s.substring(8,10));  
       OHLCSeries series = new OHLCSeries("");//高开低收数据序列,股票K线图的四个数据,依次是开,高,低,收  
       series.add(new Day(z,y,x),y0,y1,y2,y3);//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到
       seriesCollection.addSeries(series);    
    }
    JFreeChart chart = createChart(seriesCollection);
    chart.setBackgroundPaint(Color.white);//设置背景色
    XYPlot plot = (XYPlot) chart.getPlot();
    final CandlestickRenderer candlestickRender=new CandlestickRenderer();//设置K线图的画图器,必须申明为final,后面要在匿名内部类里面用到
    candlestickRender.setUseOutlinePaint(true); //设置是否使用自定义的边框线,程序自带的边框线的颜色不符合中国股票市场的习惯
    candlestickRender.setAutoWidthMethod(CandlestickRenderer.WIDTHMETHOD_AVERAGE);//设置如何对K线图的宽度进行设定
    candlestickRender.setAutoWidthGap(0.001);//设置各个K线图之间的间隔
    candlestickRender.setUpPaint(Color.RED);//设置股票上涨的K线图颜色
    candlestickRender.setDownPaint(Color.GREEN);//设置股票下跌的K线图颜色
    plot.setRenderer(candlestickRender);
    DateAxis domainAxis = (DateAxis)plot.getDomainAxis();
    DateFormat df=new SimpleDateFormat("yyyy-MM-dd");//设置显示日期格式
    DateTickUnit unit = new DateTickUnit(DateTickUnit.DAY, 5, df);
    domainAxis.setTickUnit(unit);
    ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
    String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);
    String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
   <img src="<%= graphURL %>" border="0" usemap="#<%= filename %>"> </BODY>
</HTML>生成的均线图代码:K.jsp
<!---->
 <HEAD>
 </HEAD>
 <BODY>
<%
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dvcs517";//mis是数据库名称
    String user="sa";//用户名
    String password="13391220222";//用户密码
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement();
    String sql="select * from kline order by id";//查询数据库
    ResultSet rs=stmt.executeQuery(sql);   
    TimeSeries timeseries = new TimeSeries("日线图",Day.class);
    final OHLCSeriesCollection seriesCollection = new OHLCSeriesCollection();//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到      
    while(rs.next())
    {  
       float y0=rs.getFloat("open_value");
       float y1=rs.getFloat("max_value");
       float y2=rs.getFloat("min_value");
       float y3=rs.getFloat("close_value");
       float y4=rs.getFloat("volume_value");
       String s=rs.getString("stock_date");     
       int x=Integer.parseInt(s.substring(0,4));   
       int y=Integer.parseInt(s.substring(5,7));   
       int z=Integer.parseInt(s.substring(8,10));   
       timeseries.add(new Day(z,y,x),y3);   
       OHLCSeries series = new OHLCSeries("");//高开低收数据序列,股票K线图的四个数据,依次是开,高,低,收  
       series.add(new Day(z,y,x),y0,y1,y2,y3);//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到
       seriesCollection.addSeries(series);    
    }
    TimeSeriesCollection dataset = new TimeSeriesCollection();
// 创建移动平均线数据集对象
    TimeSeries mav1 = MovingAverage.createMovingAverage
(
        timeseries, "20日均线", 20, 20
    );
    TimeSeries mav2 = MovingAverage.createMovingAverage
(
        timeseries, "10日均线", 10, 10
    );
    TimeSeries mav3 = MovingAverage.createMovingAverage
(
        timeseries, "5日均线", 5, 5
    );    
    dataset.addSeries(timeseries);        
    dataset.addSeries(mav1);
    dataset.addSeries(mav2);
    dataset.addSeries(mav3);   
    XYDataset xydataset = (XYDataset) dataset;
    JFreeChart chart = ChartFactory.createTimeSeriesChart
    (
       "X邮票走势图",
       "时间",
       "价格(元/张)",
       xydataset,
       true,
       true,
       true
    );
    chart.setBackgroundPaint(Color.white);//设置曲线图背景色
    XYPlot plot = (XYPlot) chart.getPlot();
    XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
    plot.setBackgroundPaint(Color.white);//设置网格背景颜色
    plot.setDomainGridlinePaint(Color.pink);//设置网格竖线颜色
    plot.setRangeGridlinePaint(Color.pink);//设置网格横线颜色
    xylineandshaperenderer.setBaseShapesVisible(false);//设置曲线是否显示数据点
    String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
    String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
   <img src="<%= graphURL %>" border="0" usemap="#<%= filename %>"> </BODY>
</HTML>怎么把K线图和均线图放在一起显示????????????????????

解决方案 »

  1.   

    2个子报表就可以了! surReport
      

  2.   

    你将上面的 拆分成3个文件。
    一个是:数据库操作文件,比如你连接数据,查询的SQL语句,直接返回一个ResultSet(建议不要直接返回ResultSet的对象,可以返回一个List,或者Iterator)。 然后在第二个源文件中去遍历。二个是:由于你的Kline.jsp和K.jsp中的代码有所不同,你可以将他们分别写入对应的.java文件。
    将Kline.jsp内容复制到Kline.java中
    将K.jsp内容复制到K.java中记住一点 在.java文件中创建图形的方法必须要有HttpSession session, PrintWriter pw这2个参数。后面在说
    看红色表示的
    public String createTimeSeriesChart(HttpSession session, PrintWriter pw) throws SQLException 
    {
       .....................................
    }
    Kline.jsp:
    String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
    K.jsp
    String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);三个是: 建一个.jsp页面 加入代码如下
    <div id="jiange">
    <%

    Kline line=new Kline();
    String filename1 = line.createTimeSeriesChart(session,new PrintWriter(out));
    String graphURL1 = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename1;
    %>
    <img src="<%=graphURL1%>" border=1 usemap="#<%=filename1%>"><br><br>
    <%
    K k=new K();
    String filename = k.getPieChart(session,new PrintWriter(out));
    String graphPieplotURL = request.getContextPath()+ "/servlet/DisplayChart?filename=" + filename;
    %>
    <img src="<%=graphPieplotURL%>" border=0 usemap="#map0">
    </div>
    以上是我以前做项目。 一个页面显示2个图,一个曲线图,一个饼图。只提供了思路,具体的方法还要自己去实现。。