用JFreeChart创建Timeseries,我想点击此控件,能获得所点位置的Timeserie横纵坐标值
在JAVA中,我用JFreeChart创建Timeseries,我想点击此控件,能获得所点位置的时间,从而能获得鼠标所点位置的纵坐标值.
我想把鼠标所点位置的坐标值单独在一个地方显示,因为我这个Chart里面有好几条曲线,我要同时显示鼠标所点位置处的所有曲线的值.
有哪位高手帮忙解决一下啊,我急等用啊,不胜感激!!!!!!!
[解决办法]
up 这个东西,需求难的就不好搞,我也做过类似的,但需求不一样,帮不了你.
[解决办法]
帮顶一个, 只用过JFreeChart最简单的PieChart功能...
[解决办法]
Jfreechart自带的例子好象可以实现你要求的功能.好好看看例子吧!
[解决办法]
学习一下了。...
[解决办法]
package com.cityinforport.demo; /** * ============================================================= * JFreeChart开发:利用JFreeChart开发实时曲线 * ============================================================= * Description:该例子演示了单条曲线的简单使用方法 * Original Author:谢莫锋 QQ:35814522 EMAIL:xmf3000@126.com created by 2005-02-28 * * Changes: * ------------------------- * 2005-03-01 增加线程调用 by xmf * 2005-03-02 界面调整 by xmf * ------------------------- */ //导入java2d包 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import java.io.PrintStream; //导入jfreechart包(chart) import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.plot.XYPlot; //导入jfreechart包(data) import org.jfree.data.time.*; import org.jfree.data.xy.XYDataset; //导入jfreechart包(ui) import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; public class TimeSeriesDemo1 extends JFrame implements Runnable,ActionListener{ //时序图数据集 private TimeSeries timeseries; //Value坐标轴初始值 private double lastValue; static Class class$org$jfree$data$time$Millisecond; static Thread thread1; public static void main(String[] args){ TimeSeriesDemo1 TimeSeriesDemo1 = new TimeSeriesDemo1(); TimeSeriesDemo1.pack(); RefineryUtilities.centerFrameOnScreen(TimeSeriesDemo1); TimeSeriesDemo1.setVisible(true); startThread(); } public void run(){ while(true){ try{ //根据实际需要在此处加入需要执行的代码 double d = 0.9D + 0.2D * Math.random(); lastValue = lastValue * d; Millisecond millisecond = new Millisecond(); System.out.println( "Now= " + millisecond.toString()); timeseries.add(millisecond, lastValue); Thread.sleep(300); }catch(InterruptedException e){} } } public static void startThread(){ thread1.start(); } public void actionPerformed(ActionEvent e){ if(e.getActionCommand().equals( "EXIT ")){ thread1.destroy(); System.exit(0); } } public TimeSeriesDemo1(){ //super(new BorderLayout()); thread1 = new Thread(this); lastValue = 100D; //创建时序图对象 timeseries = new TimeSeries( "Random Data ",TimeSeriesDemo1.class$org$jfree$data$time$Millisecond != null ? TimeSeriesDemo1.class$org$jfree$data$time$Millisecond : (TimeSeriesDemo1.class$org$jfree$data$time$Millisecond = TimeSeriesDemo1.getClass( "org.jfree.data.time.Millisecond "))); TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(timeseries); //创建图表面板 ChartPanel chartpanel = new ChartPanel(createChart(timeseriescollection)); chartpanel.setPreferredSize(new Dimension(500,270)); JPanel jpanel = new JPanel(); jpanel.setBorder(BorderFactory.createEmptyBorder(4,4,4,4));//边距为4 JButton jbutton = new JButton( "退出 "); jbutton.setActionCommand( "EXIT "); jbutton.addActionListener(this); jpanel.add(jbutton); getContentPane().add(chartpanel); getContentPane().add(jpanel, "South "); } private JFreeChart createChart(XYDataset xydataset){ JFreeChart jfreechart = ChartFactory.createTimeSeriesChart( "时序图例子 ", "时间 ", "温度值 ",xydataset,true,true,false); XYPlot xyplot = jfreechart.getXYPlot(); //纵坐标设定 ValueAxis valueaxis = xyplot.getDomainAxis(); valueaxis.setAutoRange(true); valueaxis.setFixedAutoRange(60000D); valueaxis = xyplot.getRangeAxis(); valueaxis.setRange(0.0D,200D); return jfreechart; } static Class getClass(String s){ Class cls = null; try{ cls = Class.forName(s); }catch(ClassNotFoundException cnfe){ throw new NoClassDefFoundError(cnfe.getMessage()); } return cls; } }