반응형

`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` 메소드를 사용하여 문자열 리소스를 출력합니다.

출력 결과는 아래와 같습니다.

이름
나이
반응형

+ Recent posts