Как я могу нарисовать заполненный прямоугольник в JFreeChart? - PullRequest
0 голосов
/ 06 февраля 2019

Я делаю небольшое приложение, используя Swing и JFreeChart.Мне нужно отобразить XYLineChart, и я хочу нарисовать над ним несколько заполненных прямоугольников.Я использовал XYShapeAnnotation для рисования прямоугольников и пытался заполнить их Graphics2D, но это не работает.Я получаю прямоугольник, отображаемый над графиком, но не заполненный.Код выглядит следующим образом:

Shape rectangle = new Rectangle2D.Double(0, 0, 7, 1);
g2.fill(rectangle);
XYShapeAnnotation shapeAnnotation = new XYShapeAnnotation(rectangle, new BasicStroke(2.f), Color.BLACK);
shapeAnnotation.setToolTipText("1");
plot.addAnnotation(shapeAnnotation);

Мне кажется, проблема в том, что позиция заполненного прямоугольника не относится к графику, но я не знаю, как это исправить.Я также хотел знать, возможно ли отобразить линии на графике над прямоугольниками, потому что я не нахожу никакого способа сделать это.

1 Ответ

0 голосов
/ 06 февраля 2019

Используйте конструктор XYShapeAnnotation, который позволяет указать и outlinePaint и fillPaint.Вы, вероятно, хотите что-то вроде этого:

XYShapeAnnotation shapeAnnotation = new XYShapeAnnotation(
    rectangle, new BasicStroke(2.f), Color.BLACK, Color.BLACK);

В качестве конкретного примера, основанного на этом ответе , следующее изменение дает следующий результат:

 renderer.addAnnotation(new XYShapeAnnotation(ellipse, stroke, color, color));

image1

Чтобы отобразить линии на диаграмме над прямоугольниками, укажите фоновый слой для аннотации, как показано здесь .

 renderer.addAnnotation(new XYShapeAnnotation(
     ellipse, stroke, color, color), Layer.BACKGROUND);

image2

...