Доступность в пользовательском элементе управления Swing, который имитирует собственный?

#java #swing #accessibility #blind

#java #swing #Специальные возможности

Вопрос:

У меня есть пользовательский элемент управления Swing, который выполняет почти ту же функцию, что и JLabel. По умолчанию он недоступен для людей, использующих вспомогательные технологии, такие как программа чтения с экрана. Я работаю над проектом Megamek GitHub и пытаюсь выяснить, как связать класс PMSimpleLabel с другими объектами, как в методе setLabelFor класса JLabel.

Принятый до сих пор подход, по-видимому, заключается в том, чтобы более или менее имитировать реализацию доступности JLabel. Я не уверен, что это правильный способ сделать это, похоже, в последнем есть некоторые элементы, которые я не понимаю.

Комментарии:

1. Единственное известное мне руководство по обеспечению доступности пользовательских компонентов Swing содержится в создании пользовательского доступного компонента в руководстве IBM по написанию доступных приложений с использованием 100% чистой Java™ (2004).

Ответ №1:

Проблема, оказывается, в значительной степени из-за пользовательских компонентов. Класс AccessibleJComponent имеет резервный механизм для присвоения имен элементам управления, которые обычно не имеют доступных имен, но это жестко запрограммировано для поиска JLabel, а не пользовательского класса label.

Для этого есть несколько обходных путей, таких как изменение методов get / setAccessibleName или переключение на использование доступного описания вместо этого.

Решение в долгосрочной перспективе, вероятно, заключается в использовании обычных компонентов Swing, где это возможно