Java 현지화 번호 서식
-
21-09-2019 - |
문제
Java는 Decimals (예 : 1/2 = 0.5)의 기간을 사용합니다.
1/2 = 0,5에서와 같이 대신 쉼표를 사용하는 방법이 있습니까? 그리고 수천대로 쉼표를 사용하지 말고 (10 만 = 100,000에서와 같이) 대신 공간을 사용하십시오 (100 000)?
출력과 관련하여 모든 종류의 문자열 형식 함수를 사용할 수 있지만 문제는 입력 (jtable)입니다. 일부 열에는 이중 형식이 필요하므로 사용자는 45.5와 같은 것을 입력해야 하며이 부분에서는 45,5에 사용됩니다. :) 미리 감사드립니다.
업데이트:
MyTable.setDefaultLocale (locale.germany)을 사용해 보았습니다. 그러나 작동하지 않았습니다. 나는 또한 locale.setdefault (locale.germany)를했다. @ main function과 그것은 작동했지만 다소 어리석은 방식으로 : 셀은 편집 모드에있는 동안 정상인 DOT를 입력해야합니다. ~ 후에 변경 사항을 확인하기 위해 Enter를 누르면 Comma : 45,5로 표시됩니다. 나는 그것이 디스플레이 목적으로 만 쉼표를 사용하지만, 여전히 동일한 ol 'dot을 편집 할 때.
그것을 고칠 방법이 있습니까? 없이 맞춤형 테이블 모델 작성?
해결책
따라서, 당신은 기본적으로 원합니다 전환하다 ㅏ 현지화 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) { }
입력을 올바르게 처리하려면 고유 한 테이블 모드를 구현하고 setValueat 메소드를 덮어 쓸 수 있습니다.