JFreechart滴答单位

时间:2012-04-05 10:07:37

标签: java jfreechart

我正在使用以下代码从网上

TickUnits units = new TickUnits();
DecimalFormat df1 = new DecimalFormat("$0");
DecimalFormat df2 = new DecimalFormat("$0.00");

// we can add the units in any order, the TickUnits collection will
// sort them...
units.add(new NumberTickUnit(100, df1, 0));
units.add(new NumberTickUnit(50, df1, 0));
units.add(new NumberTickUnit(20, df1, 0));
units.add(new NumberTickUnit(10, df1, 0));
units.add(new NumberTickUnit(5, df1, 0));
units.add(new NumberTickUnit(2, df1, 0));
units.add(new NumberTickUnit(1, df1, 0));

由于我很新,我不明白这段代码究竟是做什么的。我认为它设置 y 轴上的值,但似乎并非如此,因为 y 轴上的值超过100美元。这段代码到底是做什么的。 (也就是刻度单位究竟是什么。它是在轴上定义标签还是我在这里弄错了。)

1 个答案:

答案 0 :(得分:3)

是的,TickUnits定义Axis标签的格式,但完整的解释超出了Stackoverflow的范围。 developer guide 是决定性的,但检查为特定TickUnitSource子类返回Axis的方法可能具有指导意义。例如,NumberAxiscreateIntegerTickUnits()的源代码以及NumberTickUnitSource

引用的示例存在缺陷,因为它忽略了用户的语言环境。

附录:如果您想要本地化的货币格式,请覆盖默认的Number格式化程序。

XYPlot plot = chart.getXYPlot();
NumberAxis range = (NumberAxis) plot.getRangeAxis();
range.setNumberFormatOverride(NumberFormat.getCurrencyInstance());

免责声明:与Object Refinery Limited无关;只是一个满意的客户和非常小的贡献者。