jfreechart 1.0.13
我在jfreechart中的工具提示位置有些问题。 我通过以下配置构建它
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;
然后我将新创建的图表放入ChartComposite中。
//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();
结果我有正确的图表,但所有工具提示都转移到了视图/复合的右侧。此外,当我尝试选择一些图表区域时 - 选择不是从“0”点开始,但看起来也是如此。(见附图)
我很高兴听到有关此类行为的任何建议
答案 0 :(得分:-1)
我也有工具提示的错误。 修正案我想:
1)在JFreeChart的源代码中找到ChartComposite.java文件 2)在第1200行(aprox)找到
ChartEntity entity = entities.getEntity(
e.x - insets.x /this.scaleX,
y.x - insets.y /this.scaleY);
并删除这样的比例:
ChartEntity entity = entities.getEntity(
(e.x - insets.x),
(y.x - insets.y));
希望它有所帮助。
NB