我用jfreechart生成了K线图,代码如下:
<!---->
<%@ 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);
    final CandlestickRenderer candlestickRender=new CandlestickRenderer();//设置K线图的画图器,必须申明为final,后面要在匿名内部类里面用到
    candlestickRender.setUpPaint(Color.RED);//设置股票上涨的K线图颜色
    candlestickRender.setDownPaint(Color.GREEN);//设置股票下跌的K线图颜色
    chart.setBackgroundPaint(Color.white);//设置曲线图背景色
    XYPlot plot = (XYPlot) chart.getPlot();
    DateAxis domainAxis1 = (DateAxis)plot.getDomainAxis();
    DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
    DateTickUnit unit = new DateTickUnit(DateTickUnit.DAY, 5, df);
    domainAxis1.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图是绿色,下跌时显示的是红色,有什么解决办法???

解决方案 »

  1.   

    你定义的candlestickRender变量chart根本没引用它啊,所以它设置的属性当然不会显示到chart中了。
      

  2.   

    final CandlestickRenderer candlestickRender=new CandlestickRenderer();//设置K线图的画图器,必须申明为final,后面要在匿名内部类里面用到
        candlestickRender.setUpPaint(Color.RED);//设置股票上涨的K线图颜色
        candlestickRender.setDownPaint(Color.GREEN);//设置股票下跌的K线图颜色这是我在显示错误后加上去的
    不用上面的代码,股票上涨时显示的K图是绿色,下跌时显示的是红色,是不是用的jfreechart有问题?国外的股票绿色代表上涨,红色代表下跌
      

  3.   

    这个就不太清楚了,应该是JFreeChart的默认设置吧。
      

  4.   

    请参考如下代码,能运行且结果正确http://hi.baidu.com/lushaojin/blog/item/0ba98a82095a0293f703a679.html
      

  5.   

    楼上的是用APPLET做的,我要用jsp版的那怎么修改JFreeChart的默认设置???????????????????????????????????
      

  6.   

    我晕,谁让你直接用了,看看人家怎么做的,对应自己的代码,稍作调整啦!
    over! 不多言。
      

  7.   

    知道怎么修改JFreeChart的默认设置的帮帮忙啊!!!!!!!!!!!!!
      

  8.   

    jfreechartk中生成K线图时   默认股票上涨时显示的K图是绿色,下跌时显示的是红色, 怎么修改为   股票上涨时显示的K图是红色,下跌时显示的是绿色知道的大哥帮帮忙,小弟感激不尽!!!!!!!!!!
      

  9.   

    你的代码不是都有了吗?就是把你新建的那个candlestickRender设置到chart上啊。
      

  10.   

    XYPlot plot = (XYPlot) chart.getPlot();
    plot.setRenderer(candlestickRender);