0

jfreechart 1.0.13

I have some problem with position of tooltips in jfreechart. I construct it by the following config

 private static final GradientPaint GRADIENT_PAINT = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64));

    private static final double ITEM_MARGIN = 0.2d;

    private static final double MAXIMUM_BAR_WIDTH = .04;

    private static final int MAXIMUM_CATEGORY_LABEL_WIDTH = 10;

    private static final int MAXIMUM_CATEGORY_LABEL_LINES = 2;

    private static final Paint BACKGROUND_COLOR = new Color(196, 196, 196);

 @Override
    protected BarRenderer configMainRenderer() {
        BarRenderer renderer = new BarRenderer();
        renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
        renderer.setShadowVisible(false);
        renderer.setDrawBarOutline(false);
        renderer.setDrawBarOutline(true);
        renderer.setMaximumBarWidth(MAXIMUM_BAR_WIDTH);
        renderer.setSeriesPaint(0, GRADIENT_PAINT);
        renderer.setItemMargin(ITEM_MARGIN);
        return renderer;
    }

 @Override
    protected NumberAxis configRangeAxis(IRangeAxis axis) {
        NumberAxis valueAxis = new NumberAxis(axis.getName());
        valueAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        return valueAxis;
    }

@Override
protected CategoryAxis configDomainAxis(String domainAxisName) {
    CategoryAxis domainAxis = new CategoryAxis(domainAxisName);
    domainAxis.setMaximumCategoryLabelWidthRatio(MAXIMUM_CATEGORY_LABEL_WIDTH);
    domainAxis.setMaximumCategoryLabelLines(MAXIMUM_CATEGORY_LABEL_LINES);
    domainAxis.setTickLabelFont(getDefaultDomainAxisFont());
    return domainAxis;
}

@Override
protected CategoryPlot plotSetup(Dataset dataset, CategoryAxis domainAxis, NumberAxis mainRangeAxis, BarRenderer mainRenderer) {
    CategoryDataset catDataset = (CategoryDataset)dataset;
    CategoryPlot plot = new CategoryPlot(catDataset, domainAxis, mainRangeAxis, mainRenderer);
    plot.setOrientation(getModel().getPlotOrientation());
    plot.setBackgroundPaint(BACKGROUND_COLOR);
    plot.setDomainGridlinePaint(Color.white);
    plot.setRangeGridlinePaint(Color.white);
    return plot;

Then I put newly created chart into ChartComposite in view.

//creating composite for chart
        chartComposite = new ChartComposite(controlsComposite, SWT.NONE);
        chartComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
        chartComposite.setVisible(false);
        chartComposite.addChartMouseListener(this);
// update chartcomposite when necessary
        chartComposite.setVisible(true);
        chartComposite.setChart(chart);
        chartComposite.setHorizontalAxisTrace(true);
        chartComposite.forceRedraw();

As the result I have correct chart but all tooltips are shifted to the right side of view/composite. Also when I try to select some charts area -selection available not from the the "0" point but seems like it shifted too.(see attached pictures)

enter image description here enter image description here I will be glad to hear any suggestions about such behaviour

Volad
  • 75
  • 13

1 Answers1

-1

I also had the bug with tooltips. The fix I figured:

1) In th source of JFreeChart find file ChartComposite.java 2) On line 1200 (aprox) find

    ChartEntity entity = entities.getEntity(
    e.x - insets.x /this.scaleX, 
    y.x - insets.y /this.scaleY);

and delete scales like this:

    ChartEntity entity = entities.getEntity(
    (e.x - insets.x), 
    (y.x - insets.y));

hope it helps.

NB

NB_
  • 1
  • 1