Fadenkreuz Tracing In JFreeChart
-
18-09-2019 - |
Frage
Ich war in der Lage Echtzeit-Maus Verfolgung wie folgt umzusetzen:
Der Quellcode ist wie folgt:
jedoch nicht in der Lage I zu erhalten die korrekte y Bildschirmkoordinate, wenn ein subplot hinzugefügt wird.
Ich vermute, dass ich nicht den richtigen Bildschirmdatenbereich erhalten habe.
Wenn nur ein Grundstück auf dem Bildschirm ist, erhalte ich eine Bildschirmdatenbereich mit einer Höhe von 300 ++
Wenn ein Teilstück auf die Unterseite hinzugefügt erwarte ich, dass Bildschirm-Datenbereich der Höhe reduziert werden, aufgrund der Höhe des neu hinzugekommenen subplot besetzt.
Allerdings habe ich keine Ahnung, wie der richtigen Bildschirmdatenbereich für das erste Grundstück zu erhalten.
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);
Lösung
Hier ist die Code-Schnipsel des richtigen Rechteck nach Tauchgang in JFreeChart Quellcode zu erhalten.
/* Try to get correct main chart area. */
final Rectangle2D _plotArea = chartPanel.getChartRenderingInfo().getPlotInfo().getSubplotInfo(0).getDataArea();