Re: [問題] JFreeChart 動態Table

看板java作者 (星空下的月光)時間12年前 (2012/02/01 22:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1FALADIO (java)
文章代碼(AID): #1FALADIO (java)