`javax.accessibility.AccessibleResourceBundle`은 접근성을 위한 리소스 번들을 제공하는 클래스입니다
이 클래스는 로케일별로 구성된 리소스 번들에서 접근성 정보를 검색하여 해당 정보를 제공합니다
이를 통해 국제화된 애플리케이션에서도 다양한 언어에 대한 접근성 정보를 제공할 수 있습니다.
`AccessibleResourceBundle`은 `ResourceBundle` 클래스를 확장하여 만들어졌습니다
`ResourceBundle`은 로케일별로 구성된 문자열, 이미지 및 기타 리소스와 같은 객체를 제공하는 클래스입니다
`AccessibleResourceBundle`은 이와 유사하게 작동하지만, 추가로 `AccessibleContext`에서 접근성 정보를 검색할 수 있습니다.
`AccessibleResourceBundle` 클래스의 생성자는 `ResourceBundle.Control` 객체와 로케일을 사용하여 `AccessibleResourceBundle` 인스턴스를 만듭니다
`ResourceBundle.Control` 객체는 로케일 및 리소스 번들 파일 이름 규칙을 정의합니다
로케일이 변경될 때마다 `AccessibleResourceBundle` 인스턴스를 새로 생성할 필요가 있습니다.
`AccessibleResourceBundle` 클래스에는 `getContents()` 메서드가 포함되어 있습니다
이 메서드는 `AccessibleContext`에서 검색할 수 있는 `Locale` 매개변수를 사용하여 로케일별 리소스를 검색합니다
이 메서드는 `Map<String, Object>`을 반환합니다
`Map`의 키는 접근성 정보의 키이며, 값은 해당 정보입니다
예를 들어, "accessibleName"은 해당 구성 요소에 대한 설명을 제공합니다.
다음은 `AccessibleResourceBundle` 클래스의 간단한 예시입니다.
import javax.accessibility.AccessibleResourceBundle;
import java.util.Locale;
import java.util.ResourceBundle;
public class MyResourceBundle extends AccessibleResourceBundle {
private static final String BUNDLE_NAME = "my.resources.MyResources";
private static final Locale LOCALE = new Locale("en", "US");
private static final ResourceBundle.Control CONTROL =
new ResourceBundle.Control() {
public Locale getFallbackLocale(String baseName, Locale locale) {
return Locale.US;
}
};
@Override
public Object[][] getContents() {
return new Object[][] {
{"accessibleName", "My Component"},
{"accessibleDescription", "This is my custom component."}
};
}
public static void main(String[] args) {
MyResourceBundle bundle = new MyResourceBundle();
Object[][] contents = bundle.getContents();
for (Object[] content : contents) {
System.out.println(content[0] + ": " + content[1]);
}
}
}
위의 예제에서는 `AccessibleResourceBundle` 클래스를 확장하여 `MyResourceBundle` 클래스를 만듭니다
`MyResourceBundle` 클래스는 `getContents()` 메서드를 오버라이드하여 리소스 매핑을 반환합니다
이 예제에서는 "accessibleName"과 "accessibleDescription"이라는 두 개의 리소스 매
`javax.accessibility.AccessibleResourceBundle` 클래스는 `ResourceBundle` 클래스를 확장하며, 접근성 API의 일부인 `AccessibleContext` 클래스에서 사용되는 리소스 번들을 제공합니다.
리소스 번들(Resource Bundle)은 애플리케이션에서 사용되는 문자열, 이미지 및 기타 리소스에 대한 로컬화된 버전을 저장하는 데 사용되는 파일입니다
`AccessibleResourceBundle` 클래스는 이러한 로컬화된 리소스를 제공하며, 접근성 API에 대한 설명이나 오류 메시지 등의 문자열에 사용됩니다.
`AccessibleResourceBundle` 클래스는 다음과 같은 생성자를 제공합니다.
public AccessibleResourceBundle()
`AccessibleResourceBundle` 클래스는 `ResourceBundle` 클래스를 확장하므로, `ResourceBundle` 클래스에서 상속받은 다음의 메소드들을 사용할 수 있습니다.
- `getString(String key)` : 지정된 키(key)에 해당하는 문자열을 반환합니다.
- `getObject(String key)` : 지정된 키(key)에 해당하는 객체를 반환합니다.
- `getKeys()` : 이 리소스 번들에 포함된 모든 키를 포함하는 `Enumeration`을 반환합니다.
- `getLocale()` : 이 리소스 번들의 로컬을 반환합니다.
`AccessibleResourceBundle` 클래스는 접근성 API에서 사용되므로, `ResourceBundle`의 일반적인 사용과는 달리, 주로 문자열과 메시지를 포함하는 데 사용됩니다.
다음은 `AccessibleResourceBundle` 클래스를 사용하여 접근성 API에 대한 리소스 번들을 작성하는 예시입니다.
import javax.accessibility.AccessibleResourceBundle;
import java.util.ListResourceBundle;
public class MyResourceBundle extends ListResourceBundle {
protected Object[][] getContents() {
return contents;
}
private static final Object[][] contents = {
{ "okButton.text", "OK" },
{ "cancelButton.text", "Cancel" },
{ "yesButton.text", "Yes" },
{ "noButton.text", "No" }
};
}
public class MyAccessibleResourceBundle extends AccessibleResourceBundle {
public MyAccessibleResourceBundle() {
super();
}
protected Object[][] getContents() {
return contents;
}
private static final Object[][] contents = {
{ "okButton.text", "OK button" },
{ "cancelButton.text", "Cancel button" },
{ "yesButton.text", "Yes button" },
{ "noButton.text", "No button" }
};
}
위 코드에서 `MyResourceBundle` 클래스는 `ListResourceBundle` 클래스를 확장하며, `MyAccessibleResourceBundle` 클래스는 `AccessibleResourceBundle` 클래스를 확장합니다
`MyResourceBundle` 클래스는 `OK`, `Cancel`, `Yes`, `No` 등의 키를 가진 문자열 리소스를 제공하며, `MyAccessibleResourceBundle` 클래스는 `OK button`, `Cancel button`, `Yes button`, `No button` 등의 키를 가진 접근성에 대한 리소스를 제공합니다
이러한 리소스 번들을 사용하여, 해당
javax.accessibility.AccessibleResourceBundle 클래스는 추상 클래스이므로, 해당 클래스를 상속받아 구현한 클래스의 예제 코드를 작성해보겠습니다
import java.util.ListResourceBundle;
import javax.accessibility.AccessibleResourceBundle;
public class MyResourceBundle extends AccessibleResourceBundle {
// 문자열 리소스를 저장하는 ListResourceBundle 객체 생성
private ListResourceBundle bundle = new ListResourceBundle() {
protected Object[][] getContents() {
return new Object[][] {
{ "label.name", "이름" },
{ "label.age", "나이" }
};
}
};
// getString 메소드를 구현하여 문자열 리소스를 반환
protected Object[][] getContents() {
return bundle.getContents();
}
}
위 코드는 `MyResourceBundle` 클래스를 작성하는 예제입니다
`MyResourceBundle` 클래스는 `AccessibleResourceBundle` 클래스를 상속받아 구현한 클래스로, 문자열 리소스를 저장하는 `ListResourceBundle` 객체를 생성하고, `getString` 메소드를 구현하여 문자열 리소스를 반환합니다.
`MyResourceBundle` 클래스를 사용하여 문자열 리소스를 사용하는 예제 코드는 아래와 같습니다.
import java.util.Locale;
import javax.accessibility.AccessibleResourceBundle;
public class Main {
public static void main(String[] args) {
// 사용할 Locale 설정
Locale locale = new Locale("ko", "KR");
// MyResourceBundle 객체 생성
AccessibleResourceBundle myBundle = new MyResourceBundle();
// 문자열 리소스 출력
System.out.println(myBundle.getString("label.name"));
System.out.println(myBundle.getString("label.age"));
}
}
위 코드는 `MyResourceBundle` 클래스를 사용하여 문자열 리소스를 출력하는 예제입니다
`Locale` 객체를 생성하여 사용할 언어와 국가를 설정하고, `MyResourceBundle` 객체를 생성합니다
그리고 `getString` 메소드를 사용하여 문자열 리소스를 출력합니다.
출력 결과는 아래와 같습니다.
이름
나이
'PT선생님의 코딩 강좌' 카테고리의 다른 글
[PT선생님][93]javax.accessibility.AccessibleSelection 알아보기 (0) | 2023.03.21 |
---|---|
[PT선생님][92]javax.accessibility.AccessibleRole 알아보기 (0) | 2023.03.20 |
[PT선생님][90]javax.accessibility.AccessibleRelationSet 알아보기 (0) | 2023.03.18 |
[PT선생님][89]javax.accessibility.AccessibleRelation 알아보기 (0) | 2023.03.18 |
[PT선생님][88]java.lang.reflect.AccessibleObject 알아보기 (0) | 2023.03.17 |