2009-10-02 25 views
8

JFreeChartでは、ChartMouseEventからx、y座標が(プロット空間内で)マウスの上にあることを判別する方法はありますか?私はドメインの十字線の値を使用してみましたが、それは不正確で、実際のマウスイベントに遅れているようです。JFreeChartはマウス座標を取得します

おかげで、

ジェフマウスはgetTrigger()から座標

答えて

14

は、あなたがそれらを変換する必要があるので、ChartPanelに対して相対的です:

Point2D p = chartPanel.translateScreenToJava2D(mouseChartEvent.getTrigger().getPoint()); 
Rectangle2D plotArea = chartPanel.getScreenDataArea(); 
XYPlot plot = (XYPlot) chart.getPlot(); // your plot 
double chartX = plot.getDomainAxis().java2DToValue(p.getX(), plotArea, plot.getDomainAxisEdge()); 
double chartY = plot.getRangeAxis().java2DToValue(p.getY(), plotArea, plot.getRangeAxisEdge()); 
+0

感謝。私はplotAreaの議論が何を想定しているのか理解できませんでした。魅力のように働いて、それを感謝します。 –

+5

ここでは1つの変換レイヤーが多すぎるようです。 'ChartPanel'がデフォルトの大きさから拡大縮小されていると、これで不正な結果が得られます。 'translateScreenToJava2D'ステップを削除し、' MouseEvent.getPoint() 'から' java2DToValue'に直接指定すると、その場合も正しい値が得られます。 –

+0

ありがとう!同じものを探している – bjarven

関連する問題