0

すべてのリスナーが実装された ChartPanel があります。マウスドラッグイベントで、ドラッグアクションを表示するために注釈の座標を再描画するように変更しています。正常に動作していますが、座標が少し混乱しています。実際、私が取得している調整は、ChartPanel のコンテキストにあり、XYPlots の Axes 値に変換されているため、注釈が奇妙な場所に描画されています。

4

1 に答える 1

1

MouseEventを使用して、 XY 座標をチャート座標に変換する必要がありますjava2DToValue()

ChartPanelマウス処理コード

Rectangle2D dataArea = chartPanel.getChartRenderingInfo().getPlotInfo().getDataArea();
XYPlot xyPlot = chartPanel.getChart().getXYPlot();
// event is the MouseEvent from one of the MouseEvent functions
// store the location and use it later to place the annotation
java.awt.Point clickLocation = new Point(event.getX(), event.getY()); 

注釈コード

double x = xyPlot.getDomainAxis().java2DToValue(clickLocation.getX(), dataArea, xyPlot.getDomainAxisEdge());
double y = xyPlot.getRangeAxis().java2DToValue(clickLocation.getY(), dataArea, xyPlot.getRangeAxisEdge());
String text = Double.toString(x) + " " + Double.toString(y);

XYTextAnnotation annotation = new XYTextAnnotation(text, x, y);
plot.addAnnotation(annotation);
于 2014-08-01T11:50:15.857 に答える