문제

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 메소드를 덮어 쓸 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top