JFreeChart: пользовательская позиция метки перекрестия - PullRequest
0 голосов
/ 20 марта 2019

Можно ли разместить метку перекрестия в произвольном положении? У меня есть х и у перекрестие. Я хочу, чтобы метка перекрестия y была расположена рядом с точкой данных (изменить смещение метки координаты X).

Проблема в том, что RectangleAnchor не имеет такой опции

Crosshair yCrosshair = new Crosshair(Double.NaN, Color.DARK_GRAY, new BasicStroke(0f));
yCrosshair.setLabelAnchor(RectangleAnchor.CENTER);

И кажется, что JFreeChart полностью игнорирует настройки смещения метки:

Crosshair yCrosshair = new Crosshair(Double.NaN, Color.DARK_GRAY, new BasicStroke(0f));
yCrosshair.setLabelXOffset(5);

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

1 Ответ

0 голосов
/ 21 марта 2019

Хорошо. Я решил свою проблему с помощью XYPointerAnnotation.

XYPointerAnnotation pointer = new XYPointerAnnotation( "", 0, 0, 7.0 * Math.PI / 4.0 ); 
pointer.setTipRadius(3.0); 
pointer.setBaseRadius(15.0); 
pointer.setPaint(Color.blue); 
pointer.setTextAnchor(TextAnchor.HALF_ASCENT_LEFT); 
pointer.setBackgroundPaint(new Color(180, 180, 180, 180));

И при перемещении мыши я поместил аннотацию в нужную точку

mainPlot.removeAnnotation(pointer);
if ( !sY.isNaN() ) {
    pointer.setX(x);
    pointer.setY(sY);
    pointer.setText("POWER: "+ sY);
    mainPlot.addAnnotation(pointer);
}
...