2011-07-22 27 views
4

私はシリーズであるXYPlotと塗りつぶしのない動的に追加された2つの形状の注釈を持っています(したがって、それぞれのシリーズポイントが見えます)。注釈の上にある一連のツールヒント(マウスポインターが現在指している一連の点の座標を示す)を表示することは可能ですか?または、どのようにツールヒントを表示するために要素を並べ替えることができますか?形状の注釈の上のJFreechartシリーズのツールチップ

+0

あなたは[こちら](http://sites.google.com/site/drjohnbmatthews/jfreechartdemo)見_label_を意味しますか? – trashgod

+0

私は形状の注釈として円を追加するプロットを持っています。しかし、これを私のシリーズポイントに追加すると、それらはカバーされます(ただし、塗りつぶしはありません)。したがって、ツールチップが機能しないようにします。私は注釈をつけることができ、可能ならば私のツールのヒントを持っていたいと思っています – jpo

答えて

9

私はあなたが最後に描かれているプロットに形の注釈を追加していると思われます。代わりに、Layer.BACKGROUNDのレンダラーに追加します。以下に示すように、円はではありません。ではツール先端が(20,20)で覆い隠されていません。また、(30、30)であるのに対して、(10、10)はではなく、は線の注釈によって影響を受けることに注意してください。

image

import java.awt.BasicStroke; 
import java.awt.Color; 
import java.awt.geom.Arc2D; 
import java.awt.geom.Ellipse2D; 
import java.util.Random; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartFrame; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.annotations.XYLineAnnotation; 
import org.jfree.chart.annotations.XYShapeAnnotation; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.data.xy.XYSeries; 
import org.jfree.data.xy.XYSeriesCollection; 
import org.jfree.ui.Layer; 

/** 
* @see http://stackoverflow.com/questions/6797012 
* @see http://stackoverflow.com/questions/6604211 
*/ 
public class ArcTest { 

    private static final Random r = new Random(); 
    private static final Color blue = Color.blue; 
    private static final BasicStroke stroke = new BasicStroke(2.0f); 
    private static final double PI = 180d; 
    private static final int X = 8; 
    private static final int Y = 0; 
    private static final int W = 6 * X; 
    private static final int H = 3 * X; 

    public static void main(String[] args) { 
     JFreeChart chart = ChartFactory.createXYLineChart(
      "ArcTest", "X", "Y", createDataset(), 
      PlotOrientation.VERTICAL, true, true, false); 
     XYPlot plot = chart.getXYPlot(); 

     XYLineAndShapeRenderer renderer = 
      (XYLineAndShapeRenderer) plot.getRenderer(); 
     renderer.setBaseShapesVisible(true); 
     Ellipse2D.Double circle = new Ellipse2D.Double(X, X, 20, 20); 
     renderer.addAnnotation(new XYShapeAnnotation(
      circle, stroke, blue), Layer.BACKGROUND); 

     XYLineAnnotation line = new XYLineAnnotation(X, Y, X, H, stroke, blue); 
     plot.addAnnotation(line); 
     Arc2D.Double arc = new Arc2D.Double(X, Y, W, 2 * H, PI, PI, Arc2D.OPEN); 
     plot.addAnnotation(new XYShapeAnnotation(arc, stroke, blue)); 

     ChartFrame frame = new ChartFrame("Test", chart); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    private static XYDataset createDataset() { 
     XYSeriesCollection result = new XYSeriesCollection(); 
     XYSeries series = new XYSeries("ArcTest"); 
     series.add(0, 0); 
     series.add(10, 10); 
     series.add(20, 20); 
     series.add(30, 30); 
     series.add(W, W); 
     result.addSeries(series); 
     return result; 
    } 
} 
+0

いつもサンプルコードであなたの応答を添えてくれてありがとう – jpo

+0

これも参照してください[例](http://stackoverflow.com/questions/6604211/jfreechart) -draw-arc-on-chart/6620017#6620017)。 – trashgod

関連する問題