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 に答える