تنسيق رقم توطين Java
-
21-09-2019 - |
سؤال
يستخدم 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.