lierre

jformattedtextfield 예제

Swing이 제공하는 포맷을 사용하여 형식이 지정된 텍스트 필드를 설정하여...

02 Août

Swing이 제공하는 포맷을 사용하여 형식이 지정된 텍스트 필드를 설정하여 지역화된 형식으로 날짜와 숫자를 입력할 수 있습니다. 또 다른 종류의 포터를 사용하면 문자 마스크를 사용하여 필드의 각 위치에 입력할 수 있는 문자 집합을 지정할 수 있습니다. 예를 들어(XX) X-XX-XX-XX-XX와 같은 특정 형식으로 전화 번호를 입력하기 위한 마스크를 지정할 수 있습니다. 다음 예제에서는 소문자를 대문자에 매핑하는 DocumentFilter 만들기를 보여 줍니다. 예를 들어 NumberFormat에서 상속하고 종종 공장 메서드에 의해 반환되는 DecimalFormat 개체는 setMaximumFractionDigits 및 setNegativePrefix 메서드를 사용하여 사용자 지정할 수 있습니다. 형식 개체 사용에 대한 자세한 내용은 국제화 추적의 서식 지정 단을 참조하십시오. 다음 그림은 formatter 팩터리를 사용하여 대출 금액 및 APR 필드에 대한 여러 편집기를 설정하는 FormattedTextFieldDemo 예제를 기반으로 하는 응용 프로그램을 보여 준다. 사용자가 대출 금액을 편집하는 동안 $ 문자는 사용자가 강제로 입력하지 않도록 사용되지 않습니다. 마찬가지로 사용자가 APR 필드를 편집하는 동안 % 문자는 필요하지 않습니다. 사용자 지정 형식을 형식텍스트 필드와 연결하는 가장 쉬운 방법은 형식을 인수로 사용하는 JFormattedTextField 생성기를 사용하여 필드를 만드는 것입니다. amountField 및 rateField 개체를 만드는 이전 코드 예제에서 이 연결을 볼 수 있습니다.

AbstractFormatterFactory가 명시적으로 설정되지 않은 경우 setValue가 호출된 후 값 형식의 클래스를 기반으로 설정됩니다(값이 null이 아니라고 가정). 예를 들어 다음 코드에서 숫자 서식을 처리하기 위해 적절한 추상포맷팩토리 및 추상포맷기가 만들어집니다. 다음 예제에서는 JFormattedTextField를 만들고 사용하여 스윙 기반 응용 프로그램의 텍스트 필드에 날짜 형식을 지정하는 방법을 보여 주시겠습니다. 서식이 지정된 텍스트 필드의 현재 값을 얻으려면 getValue 메서드를 사용합니다. 필요한 경우 getValue 전에 commitEdit 메서드를 호출하여 값이 텍스트를 반영하는지 확인할 수 있습니다. getValue 메서드는 Object를 반환하므로 필드 값에 사용되는 유형으로 오브젝트를 캐스팅해야 합니다. 예: java.text.Format 개체는 문자열 형식의 개체 형식을 정의합니다. 예를 들어 mm/dd/yyy 형식의 날짜 개체는 2014년 07/20처럼 보입니다. 서식이 지정된 텍스트 필드 값의 변경 내용을 검색하려면 서식이 지정된 텍스트 필드에 속성 변경 리스너를 등록하여 « value » 속성에 대한 변경 내용을 들을 수 있습니다. 속성 변경 리스너는 FormattedTextFieldDemo 예제에서 가져온 것입니다: MaskFormatter 클래스는 필드 텍스트의 각 위치에서 유효한 문자를 정확히 지정하는 포맷터를 구현합니다.

예를 들어 다음 코드는 사용자가 5자리 우편 번호를 입력할 수 있는 MaskFormatter를 만듭니다. JFormattedTextField). 이렇게 하면 개발자가 JFormattedTextField의 다른 상태에 대해 서로 다른 포맷터를 쉽게 제공할 수 있습니다. 예를 들어 현재 값이 null인 경우 특수 추상포매터를 제공하거나 편집할 때 포터 하나, 표시할 때 다른 포터를 제공할 수 있습니다. AbstractForFormatterFactory에 의해 정의 됩니다: 코드는 numberFormatter 클래스의 하위 클래스를 만들어 percentEditFormat를 사용 하는 포맷터 사용자 지정 합니다. 이 하위 클래스는 값ToString 및 stringToValue 메서드를 재정의합니다 NumberFormatter 그래서 그들은 실제로 계산에 사용 되는 값에 표시 된 숫자를 변환 하 고 숫자를 변환 합니다. 특히 표시된 숫자는 실제 값의 100배입니다.