سؤال

يستخدم Java فترة في العشرية ، على سبيل المثال 1/2 = 0.5

هل هناك أي طريقة لجعلها تستخدم فاصلة بدلاً من ذلك ، كما في 1/2 = 0،5؟ وليس لاستخدام الفاصلة لآلاف (كما هو الحال في مائة ألف = 100000) ولكن استخدم المساحة بدلاً من ذلك (100000)؟

عندما يتعلق الأمر بالإخراج ، أفترض أنه يمكنني استخدام جميع أنواع وظائف تنسيق السلسلة ، ولكن المشكلة هي الإدخال (JTable). تتطلب بعض الأعمدة تنسيقًا مزدوجًا ، لذا يجب على المستخدمين إدخال شيء مثل 45.5 وفي هذه الأجزاء يتم استخدامها إلى 45،5 :) شكرًا مقدمًا

تحديث:

حاولت استخدام mytable.setDefaultLocale (locale.germany) ؛ لكنها لم تنجح. لقد قمت أيضًا بـ locale.setDefault (locale.germany) ؛ @ وظيفة رئيسية ونجحت ولكن بطريقة سخيفة إلى حد ما: بينما الخلية في وضع التحرير ، يجب أن تدخل DOT كالمعتاد ، أي 45.5 ولكن بعد تضغط على Enter لتأكيد التغييرات ، ويتم عرضه على أنه فاصلة: 45،5. أعني أنه يستخدم فاصلة فقط لأغراض العرض ، ولكن عند تحريره الذي لا يزال نفس النقطة.

هل هناك أي طريقة لإصلاح ذلك بدون كتابة نموذج الجدول المخصص؟

هل كانت مفيدة؟

المحلول

وبالتالي ، فأنت تريد في الأساس يتحول أ موضعية String من المفترض أن يكون التمثيل بتنسيق عددي في Number/BigDecimal والعكس صحيح؟

هناك لديك java.text.DecimalFormat ل. لمعرفة المزيد ، استشر البرنامج التعليمي الخاص بـ Sun حول الموضوع.

لتوطين تطبيق التأرجح الخاص بك ، استخدم JComponent#setDefaultLocale(). على سبيل المثال

JComponent.setDefaultLocale(Locale.GERMANY);

نصائح أخرى

ألق نظرة على تنسيق وتحليل رقم للمكان:

// 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) {
}

لمعالجة الإدخال بشكل صحيح ، يمكنك تنفيذ نموذج Tablemodel الخاص بك والكتابة فوق طريقة setValueat.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top