4

Java は 10 進数でピリオドを使用します。たとえば、1/2 = 0.5 です。

1/2 = 0,5 のように、代わりにコンマを使用する方法はありますか? また、千をコンマで表すのではなく (10 万 = 100,000 のように)、代わりにスペース (100 000) を使用しますか?

出力に関しては、あらゆる種類の文字列フォーマット関数を使用できると思いますが、問題は入力 (JTable) です。一部の列には Double 形式が必要なため、ユーザーは 45.5 のようなものを入力する必要があり、これらの部分では 45,5 に慣れています :) よろしくお願いします

アップデート:

myTable.setDefaultLocale(Locale.Germany); を使用してみました。しかし、うまくいきませんでした。Locale.setDefault(Locale.Germany); も行いました。@ main 関数とそれは機能しましたが、かなりばかげた方法でした: セルが編集モードになっている間、通常どおり 45.5 などのドットを入力する必要がありますが Enter キーを押して変更を確認すると、コンマとして表示されます: 45,5. つまり、コンマは表示目的でのみ使用されますが、編集するときはまだ同じ古いドットです。

カスタムテーブルモデルを書かに修正する方法はありますか?

4

3 に答える 3

5

Formatting and Parsing a Number for a Locale をご覧ください。

// Format for CANADA locale
Locale locale = Locale.CANADA;
String string = NumberFormat.getNumberInstance(locale).format(-1234.56); // -1,234.56

// Format for GERMAN locale
locale = Locale.GERMAN;
string = NumberFormat.getNumberInstance(locale).format(-1234.56); // -1.234,56

// Format for the default locale
string = NumberFormat.getNumberInstance().format(-1234.56);


// Parse a GERMAN number
try {
    Number number = NumberFormat.getNumberInstance(locale.GERMAN).parse("-1.234,56");
    if (number instanceof Long) {
        // Long value
    } else {
        // Double value
    }
} catch (ParseException e) {
}
于 2010-01-16T03:05:13.230 に答える
2

したがって、基本的に、数値形式であると思われるローカライズされた表現を変換したい、またはその逆をしたいですか? StringNumber/BigDecimal

そこにjava.text.DecimalFormatfor があります。詳細については、この件に関するSun 独自のチュートリアルを参照してください。

Swing アプリケーションをローカライズするには、JComponent#setDefaultLocale(). 例えば

JComponent.setDefaultLocale(Locale.GERMANY);
于 2010-01-16T03:08:11.830 に答える
1

入力を正しく処理するには、独自の TableModel を実装して setValueAt メソッドを上書きします。

于 2010-01-16T05:28:37.557 に答える