Barrierefreie Softwareentwicklung mit Java, die praktische Umsetzung (3/3)

In diesem Artikel möchte ich anhand von Codeauszügen zeigen, wie eine barrierefreie Java-Anwendung mit Swing entwickelt und getestet werden kann.

Grundsätzliches

Ich werde hier nicht Java-Code einer komplett funktionierenden Anwendung wiedergeben, sondern nur die Teile, welche für die Barrierefreiheit wichtig sind.

Übernahme der Betriebssystemeinstellungen in Java-Software

Im ersten Artikel habe ich erklärt, dass Menschen mit einer Sehbehinderung oder mit einer Farbfehlsichtigkeit bestimmte Einstellungen im Betriebssystem vornehmen, um das Betriebssystem an ihre Bedürfnisse anzupassen.

Ihre Java-Software muss in der Lage sein, diese Einstellungen zu übernehmen, damit diese Personengruppen mit ihrer Software genauso gut arbeiten können, wie mit dem Betriebssystem. Um dies zu erreichen, muss das Look and Feel gesetzt werden.

In meiner Java-Demo-Software für Barrierefreiheit habe ich in der main-Methode folgenden Code implementiert:

// Look and Feel setzen, damit das Programm-Menü die
// große Systemschrift und die Farbeinstellungen vom  Betriebssystem
// übernimmt. 
try {
   UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
   e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
   e.printStackTrace();
}

Swing-Eigenschaften der Barrierefreiheit für Screenreader setzen

Folgende Accessibility-Eigenschaften sind in Swing wichtig:

AccessibleName

Es kann grundsätzlich nichts schaden, jeder Komponente einen AccessibleName zu geben. Der AccessibleName soll den Zweck der Komponente kurz beschreiben. Der AccessibleName wird von Screenreadern vorgelesen, wenn die Komponente den Fokus erhält, sprich aktiviert wird.

AccessibleDescription

Wenn die Bedeutung einer Komponente von Ihrem Namen abgeleitet werden kann, braucht man diese Eigenschaft nicht zu setzen. Fokussiert man eine Komponente bei der Tooltips gesetzt sind, bekommt die Eigenschaft AccessibleDescription den Inhalt vom Tooltip. Ansonsten muss diese Eigenschaft explizit gesetzt werden. Die Eigenschaft kann genutzt werden, um ausführlichere Informationen bereit zu stellen, z. B. für Screenreader.

// Setzen der Accessibility-Eigenschaften
void makeItBarrierefrei() {
  tfWebadresse.getAccessibleContext().setAccessibleName("Eingabefeld für Webadresse - setAccessibleName");
  tfWebadresse.setToolTipText("Eingabefeld für Webadresse - Tooltip");
  tfWebadresse.getAccessibleContext().setAccessibleDescription("Webadresse eingeben mit http://");
  btnWebAnalyse.getAccessibleContext().setAccessibleName("Schalter zum Starten der Analyse auf Barrierefreiheit");
  btnWebAnalyse.getAccessibleContext()
               .setAccessibleDescription("Schalter zum Starten der Analyse auf Barrierefreiheit. Es wird die eingegebene Webadresse nach Kriterien der BITV 2.0 analysiert!");
  btnWebAnalyse.setToolTipText("Schalter zum Starten der Analyse auf Barrierefreiheit-Tooltip");
}

Tastaturbedienbarkeit

Damit blinde und sehbehinderte Menschen die Software auch ohne Maus bedienen können, muss gewährleistet sein, dass die komplette Software per Tastatur bedienbar ist.

LabelFor

Manche Komponenten benötigen eine Beschriftung, zum Beispiel Eingabefelder. Mit LabelFor kann ein Eingabefeld mit seiner Beschriftung verbunden werden. Ist die Beschriftung durch ein Tastenkürzel/Shortcut ansteuerbar, wird das dazugehörige Eingabefeld aktiviert. Dies ist deshalb wichtig, weil blinde und sehbehinderte Menschen oft mit Tastatur arbeiten und nicht mit der Maus. Der Screenreader erkennt, wenn eine Beschriftung mit einem Eingabefeld verknüpft ist.

DisplayedMnemonic

Mit der Methode setDisplayedMnemonic(…) können Tastenkürzel gesetzt werden. Dies erleichtert die Bedienung der Software für blinde und sehbehinderte Menschen.


//Label (Beschriftung des Eingabefeldes) wird erstellt
JLabel lblWebadresse = new JLabel("Webadresse");

//Eingabefeld wird erstellt
tfWebadresse = new JTextField(40);

//Label wird mit Eingabefeld verknüpft
lblWebadresse.setLabelFor(tfWebadresse);

//Tastenkürzel wird gesetzt
lblWebadresse.setDisplayedMnemonic('w');

So, unsere Java-Anwendung ist fertig!

Aktivieren der Java Access Bridge

Jetzt aktivieren Sie die Java Access Bridge mit Hilfe von DOS-Kommandozeilen oder der Batchdatei, wie im letzten Artikel beschrieben.

Installieren und konfigurieren des kostenlosen Screenreaders NVDA

Jetzt möchten Sie testen, ob der Screenreader die hinterlegten Texte ausliest. Laden Sie den Screenreader NVDA herunter: http://www.nvaccess.org/download/.

Nicht erschrecken: Bei der Installation von NVDA ertönen regelmäßig Töne. Das hat den Grund, weil Blinde sonst nicht wissen, wann die Installation abgeschlossen ist. Nach der Installation starten Sie NDVA. Es erscheint kein Programmfenster. Das Programmsymbol trägt sich in den Benachrichtigungsbereich ein. Mit einem Rechtsklick auf das Programmsymbol im Benachrichtigungsbereich erscheint ein Menü. Dort klicken Sie auf „Einstellungen“ und danach auf „Stimmeneinstellungen“. Dort können Sie die Sprechgeschwindigkeit einstellen. Von Haus aus ist die Sprechgeschwindigkeit von NVDA sehr schnell eingestellt, weil Blinde ein sehr gut geschultes Gehör haben. Jetzt können Sie testen, ob Ihre Java-Software Screenreadertauglich ist und die Texte vorgelesen werden, welche Sie hinterlegt haben.

Autor: Markus Lemcke
Link: http://www.marlem-software.de

Über Christian Ullenboom

Ich bin Christian Ullenboom und Autor der Bücher ›Java ist auch eine Insel. Einführung, Ausbildung, Praxis‹ und ›Java SE 8 Standard-Bibliothek. Das Handbuch für Java-Entwickler‹. Seit 1997 berate ich Unternehmen im Einsatz von Java. Sun ernannte mich 2005 zum ›Java-Champion‹.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.