モジュール java.desktop
パッケージ javax.swing.text

クラスNumberFormatter

  • すべての実装されたインタフェース:
    Serializable, Cloneable


    public class NumberFormatter
    extends InternationalFormatter
    NumberFormatterは、数に関する特殊な動作を追加するInternationalFormatterをサブクラス化します。 特殊化には以下が含まれます(これらは、setAllowsInvalid(false)のように、NumberFormatterが無効な数を表示しない場合にだけ使用されます)。
    • 指数フィールド以外のフィールドで+/- (「-」はDecimalFormatに関連するDecimalFormatSymbolsから判別される)を押すと、数の符号の正/負への変更が試みられる。
    • 指数フィールドで+/- (「-」はDecimalFormatに関連するDecimalFormatSymbolsから判別される)を押すと、指数の符号の正/負への変更が試みられる。

    科学的数値表記を使用している場合は、上書きモードsetOverwriteMode(true)をオンにします。 たとえば、

     DecimalFormat decimalFormat = new DecimalFormat("0.000E0");
     NumberFormatter textFormatter = new NumberFormatter(decimalFormat);
     textFormatter.setOverwriteMode(true);
     textFormatter.setAllowsInvalid(false);
     

    ユーザーに10進数値の入力を許可する場合、DecimalFormatに少なくとも1つの10進数(#.0###)を持たせるか、無効なsetAllowsInvalid(true)になる値を許可する必要があります。 そうでない場合、ユーザーは10進数値を入力できません。

    NumberFormatterでは、スーパー・クラスとはわずかに異なる動作をstringToValueに提供します。 値のClassとして、IntegerLongFloatDoubleByteShortのいずれかを指定(DefaultFormatter.setValueClass(java.lang.Class<?>))していて、FormatのparseObjectNumberのインスタンスを返す場合、値クラスの対応するインスタンスは、値クラスが表すプリミティブ型に適したコンストラクタを使用して作成されます。 例えば: setValueClass(Integer.class)は結果の値をInteger.valueOf(((Number)formatter.parseObject(string)).intValue())によって作成させます。 典型的な例として、さまざまなNumberの実装が一般的に互い同士を比較できないときに、最大値や最小値を設定するのに役立ちます。 また、なんらかの理由で値に特別なNumberの実装が必要なときにも役立ちます。

    警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースとの互換性がなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4以降、すべてのJavaBeans™用の長期間の格納サポートがjava.beansパッケージに追加されています。 XMLEncoderを参照してください。

    導入されたバージョン:
    1.4
    関連項目:
    直列化された形式
    • コンストラクタの詳細

      • NumberFormatter

        public NumberFormatter​()
        NumberFormat.getNumberInstance()から取得したデフォルトのNumberFormatインスタンスでNumberFormatterを作成します。
      • NumberFormatter

        public NumberFormatter​(NumberFormat format)
        指定したFormatインスタンスを使用して、NumberFormatterを作成します。
        パラメータ:
        format - 正当な値の規定に使用する書式
    • メソッドの詳細

      • setFormat

        public void setFormat​(Format format)
        編集および表示が可能な正当な値を規定する書式を設定します。

        nullのコンストラクタを使用した場合、このプロパティの値は、NumberFormat.getNumberInstance()メソッドによって現在のロケールに決定されます。

        オーバーライド:
        setFormat、クラス: InternationalFormatter
        パラメータ:
        format - 適正な値の規定に使用するNumberFormatインスタンス