我正在使用以下代码从网上
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美元。这段代码到底是做什么的。 (也就是刻度单位究竟是什么。它是在轴上定义标签还是我在这里弄错了。)
答案 0 :(得分:3)
是的,TickUnits
定义Axis
标签的格式,但完整的解释超出了Stackoverflow的范围。 developer guide †是决定性的,但检查为特定TickUnitSource
子类返回Axis
的方法可能具有指导意义。例如,NumberAxis
中createIntegerTickUnits()
的源代码以及NumberTickUnitSource
引用的示例存在缺陷,因为它忽略了用户的语言环境。
附录:如果您想要本地化的货币格式,请覆盖默认的Number
格式化程序。
XYPlot plot = chart.getXYPlot();
NumberAxis range = (NumberAxis) plot.getRangeAxis();
range.setNumberFormatOverride(NumberFormat.getCurrencyInstance());
† 免责声明:与Object Refinery Limited无关;只是一个满意的客户和非常小的贡献者。