1

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

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 美元。这段代码究竟做了什么。(还有到底什么是刻度单位。它是定义轴上的标签还是我在这里弄错了)。

4

1 回答 1

3

是的,TickUnits定义Axis标签的格式,但完整的解释超出了 Stackoverflow 的范围。开发人员指南†</sup> 是决定性的,但检查为特定子类返回 a 的方法可能具有指导意义例如,in的源代码,以及TickUnitSourceAxiscreateIntegerTickUnits()NumberAxisNumberTickUnitSource

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

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

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

†</sup>免责声明:不隶属于 Object Refinery Limited;只是一个满意的客户和非常小的贡献者。

于 2012-04-05T11:48:03.790 回答