作者rieo (星空下的月光)
看板java
标题Re: [问题] JFreeChart 动态Table
时间Wed Feb 1 22:56:11 2012
※ 引述《rieo (星空下的月光)》之铭言:
: 打算用JFreeChart画两个表格
: 上方是个 TimeSeriesChart 下方是个 JXTable
: TimeSeriesChart用滑鼠框个区块 他会自动Zoom In
: 假设原本资料有100组
: 框了其中20-50组资料 自动局部放大後
: 我打算下方的Table也只秀出这局部的Data (若Zoom Out後 又会回到全区的Data)
: 目前卡在框出区块後 无法得知目前区块 Time的值
: 有实做过 MouseListenr 但似乎仅能获得当前 X Y 值
: 想请教是否有API 或是什麽方法可以做到类似功能
: 谢谢
网路上找到相关资料 但执行起来有点问题
private long getDomainValue(ChartPanel panel, MouseEvent e) {
int x = e.getX();
int y = e.getY();
Point2D point2D = panel.translateScreenToJava2D(new Point(x, y));
XYPlot xyplot = (XYPlot) panel.getChart().getPlot();
ChartRenderingInfo chartrenderinginfo = panel.getChartRenderingInfo();
java.awt.geom.Rectangle2D rectangle2d = chartrenderinginfo.getPlotInfo()
.getDataArea();
double d = xyplot.getDomainAxis()
.java2DToValue(point2d.getX(), rectangle2d,
xyplot.getDomainAxisEdge());
double d1 = xyplot.getRangeAxis()
.java2DToValue(point2d.getY(), rectangle2d,
xyplot.getRangeAxisEdge());
ValueAxis valueaxis = xyplot.getDomainAxis();
ValueAxis valueaxis1 = xyplot.getRangeAxis();
double d2 = valueaxis
.valueToJava2D(d, rectangle2d, xyplot.getDomainAxisEdge());
double d3 = valueaxis1
.valueToJava2D(d1, rectangle2d, xyplot.getRangeAxisEdge());
Point point = panel.translateJava2DToScreen
(new java.awt.geom.Point2D.Double(d2, d3));
System.out.println("Mouse coordinates are (" + x + ", " + y + "),
in data space = (" + d + ", " + d1 + ").");
System.out.println("--> (" + point.getX() + ", " + point.getY() + ")");
return new Double(d).longValue();
}
目前抓点基本上没问题
但若是从滑鼠左上拉到右下 default行为会将所选区域放大
这时候点下去的X值正确 但放开时的X值会比实际值还小
不晓得是不是因为区域放大使得整个对应不正常 所造成的影响
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.147.15.66