javax.accessibility.AccessibleBundle은 접근성 지원을 위한 문자열 리소스 번들을 나타내는 인터페이스입니다
이 인터페이스는 Java Accessibility API 1.0부터 사용 가능하며, Java SE 9까지 지원됩니다.
AccessibleBundle 인터페이스는 다국어 지원을 포함한 접근성 기능을 지원하는 데 사용됩니다
이 인터페이스를 구현하는 클래스는, 시각적 요소의 접근성 정보를 제공하는 데 필요한 문자열 리소스를 포함합니다
예를 들어, AccessibleBundle을 구현하는 클래스는 시각적 요소의 이름, 설명, 상태 등을 저장할 수 있습니다.
AccessibleBundle 인터페이스는 다른 인터페이스와 함께 사용됩니다
예를 들어, AccessibleContext 인터페이스는 시각적 요소의 접근성 정보를 제공하는 인터페이스입니다
AccessibleContext 인터페이스는 AccessibleBundle 인터페이스를 구현하는데, 이를 통해 시각적 요소의 문자열 리소스 정보를 제공합니다.
AccessibleBundle 인터페이스는 접근성 API를 구현하는 데 필수적인 인터페이스 중 하나입니다
다국어 지원을 포함한 문자열 리소스를 포함하는 클래스를 작성할 때 이 인터페이스를 구현하여, 시각적 요소의 접근성 정보를 더욱 효과적으로 제공할 수 있습니다
아래는 AccessibleBundle 인터페이스를 구현한 예제 코드입니다.
import java.util.ListResourceBundle;
import javax.accessibility.AccessibleBundle;
public class MyBundle extends ListResourceBundle implements AccessibleBundle {
@Override
protected Object[][] getContents() {
return new Object[][] {{"button.name", "Click me!"}, {"button.description", "Button to perform an action."}};
}
@Override
public String getAccessibleName() {
return (String) getObject("button.name");
}
@Override
public String getAccessibleDescription() {
return (String) getObject("button.description");
}
}
이 예제에서는 AccessibleBundle 인터페이스를 구현한 MyBundle 클래스를 정의합니다
getContents 메서드에서는 문자열 리소스를 배열 형태로 반환하고 있습니다
이 클래스는 "button.name"과 "button.description" 두 개의 문자열 리소스를 가지고 있습니다.
MyBundle 클래스는 AccessibleBundle 인터페이스를 구현하고 있기 때문에, getAccessibleName과 getAccessibleDescription 메서드를 재정의하여, 시각적 요소의 이름과 설명 정보를 제공하고 있습니다
이 클래스를 사용하면, JButton 등의 시각적 요소의 접근성 정보를 더욱 효과적으로 제공할 수 있습니다.
또한, AccessibleBundle은 Java SE의 다국어 지원 기능을 활용하여, 시각적 요소의 문자열 리소스를 다국어로 제공할 수 있습니다
이를 위해서는 다국어 문자열 리소스를 포함하는 클래스를 작성해야 합니다
이러한 클래스는 Java의 ResourceBundle 클래스를 상속하여 작성할 수 있습니다.
아래는 AccessibleBundle을 상속한 클래스를 이용하여, JButton의 다국어 지원을 구현한 예제 코드입니다.
import java.util.ListResourceBundle;
import javax.accessibility.AccessibleBundle;
import javax.swing.JButton;
public class LocalizedButton extends JButton {
private static final long serialVersionUID = 1L;
public LocalizedButton(String key, AccessibleBundle bundle) {
setText(bundle.getObject(key).toString());
setAccessibleContext(new LocalizedAccessibleContext(key, bundle));
}
private class LocalizedAccessibleContext extends AccessibleContext {
private static final long serialVersionUID = 1L;
private final String key;
private final AccessibleBundle bundle;
public LocalizedAccessibleContext(String key, AccessibleBundle bundle) {
this.key = key;
this.bundle = bundle;
}
@Override
public String getAccessibleName() {
return bundle.getObject(key + ".name").toString();
}
@Override
public String getAccessibleDescription() {
return bundle.getObject(key + ".description").toString();
}
}
}
public class MyBundle_en extends ListResourceBundle implements AccessibleBundle {
@Override
protected Object[][] getContents() {
return new Object[][] {{"button.name", "Click me!"}, {"button.description", "Button to perform an action."}};
}
}
public class MyBundle_fr extends ListResourceBundle implements AccessibleBundle {
@Override
protected Object[][] getContents() {
return new Object[][] {{"button.name", "Cliquez ici!"}, {"button.description", "Bouton pour effectuer une action."}};
}
}
이 예제에서는 JButton을 상속하여 LocalizedButton 클래스를 정의하고 있습니다
LocalizedButton 클래스는 AccessibleBundle을 이용하여, JButton의 다국어 지원을 구현하고 있습니다.
MyBundle_en 클래스와 MyBundle_fr 클래스는 AccessibleBundle을 구현하는 다국어 문자열 리소스를 가지고 있는 클래스입니다
MyBundle_en 클래스는 영어 문자열 리소스를, MyBundle_fr 클래스는 프랑스어 문자열 리소스를 가지고 있습니다.
LocalizedButton 클래스는 LocalizedAccessibleContext 클래스를 이용하여, 시각적 요소의 접근성 정보를 제공합니다
LocalizedAccessibleContext 클래스는 AccessibleContext를 상속하고 있으며, 시각적 요소의 이름과 설명 정보를 제공하기 위해 getAccessibleName과 getAccessibleDescription 메서드를 재정의하고 있습니다
이 클래스는 버튼의 다국어 지원을 구현하기 위해, AccessibleBundle을 이용하여 문자열 리소스 정보를 가져오고 있습니다.
위의 예제 코드를 실행하면, MyBundle_en 클래스의 영어 문자열 리소스를 사용하는 JButton이 생성되며, 프랑스어 문자열 리소스를 사용하는 JButton을 생성하기 위해서는 MyBundle_fr 클래스를 사용하면
'PT선생님의 코딩 강좌' 카테고리의 다른 글
[PT선생님][79]javax.accessibility.AccessibleContext 알아보기 (1) | 2023.03.13 |
---|---|
[PT선생님][78]javax.accessibility.AccessibleComponent 알아보기 (0) | 2023.03.12 |
[PT선생님][76]javax.accessibility.AccessibleAttributeSequence 알아보기 (0) | 2023.03.12 |
[PT선생님][75]javax.accessibility.AccessibleAction 알아보기 (0) | 2023.03.11 |
[PT선생님][74]javax.accessibility.Accessible 알아보기 (0) | 2023.03.11 |