1

私は次のようにリアルタイムのマウストレースを実装することができました:

代替テキスト

ソースコードは次のとおりです。

http://jstock.cvs.sourceforge.net/viewvc/jstock/jstock/src/org/yccheok/jstock/charting/CrossHairUI.java?revision=1.5&view=markup

http://jstock.cvs.sourceforge.net/viewvc/jstock/jstock/src/org/yccheok/jstock/gui/ChartJDialog.java?revision=1.9&view=markup

ただし、サブプロットを追加すると、正しいy画面座標を取得できませんでした。

(壊れた画像)

正しい画面データ領域を取得できなかったと思われます。

画面にプロットが1つしかない場合、高さ300++の画面データ領域が表示されます。

下部にサブプロットを追加すると、新しく追加されたサブプロットが占める高さのために、画面データ領域の高さが低くなると思います。

ただし、最初のプロットの正しい画面データ領域を取得する方法がわかりません。

final XYPlot plot = (XYPlot) cplot.getSubplots().get(0);

// Shall I get _plotArea represents screen for getSubplots().get(0)?
// How?
// I try
//
// chartPanel.getScreenDataArea(0, 0);
// chartPanel.getScreenDataArea(0, 1);
// chartPanel.getScreenDataArea(1, 0);
// chartPanel.getScreenDataArea(1, 1);
//
// All returned null

// OK. I suspect this is causing me unable to get the correct screen y coordinate
// I always get the same _plotArea, although a new sub plot had been added.
final Rectangle2D _plotArea = chartPanel.getScreenDataArea();

final RectangleEdge rangeAxisEdge = plot.getRangeAxisEdge();

final double yJava2D = rangeAxis.valueToJava2D(yValue, _plotArea, rangeAxisEdge);
4

1 に答える 1

0

これは、JFreeChartソースコードに飛び込んだ後に正しい長方形を取得するためのコードスニペットです。

/* Try to get correct main chart area. */
final Rectangle2D _plotArea = chartPanel.getChartRenderingInfo().getPlotInfo().getSubplotInfo(0).getDataArea();
于 2010-02-07T10:18:15.837 に答える