Barrierefreie Software mit JavaFX

Seite 2: Wie sich barrierefreie Software mit JavaFX entwickeln lässt

Inhaltsverzeichnis

Bevor JavaFX zur Sprache kommt, sei kurz erklärt, wie mit Java Swing barrierefreie Softwareentwicklung gestaltet wurde, damit erkennbar ist, dass sich mit JavaFX einiges verbessert hat.

Die erste Möglichkeit, mit der Programmiersprache Java barrierefreie Programmoberflächen zu entwickeln, hieß Swing, ein ursprünglich von Sun Microsystems entwickeltes GUI-Toolkit. Seit Java 1.2 ist Swing Bestandteil der Java-Runtime. Damit die Programmoberfläche mit dem Screenreader kommunizieren kann, war eine Java Access Bridge zu installieren und in der "Erleichterten Bedienung" von Windows zu aktivieren. War eine 32-Bit- und eine 64-Bit Java Runtime Environment installiert, mussten Entwickler die Bridge per DOS-Befehl aktivieren, weil sich per Windows-Oberfläche nur eine Bridge aktivieren ließ. Um die Betriebssystemeinstellungen zu übernehmen, war ein bestimmter Code in die Java-Swing-Anwendung zu implementieren.

JavaFX ist der Nachfolger von Swing. Die Kommunikation zwischen JavaFX-Programmoberfläche und Screenreader funktioniert jetzt ohne Java Access Bridge. Um eine JavaFX-Oberfläche screenreadertauglich zu gestalten, müssen Entwickler den Oberflächenkomponenten Texte hinterlegen, welche die Oberflächenkomponente beschreiben. Blinde Nutzer müssen sich das Aussehen der Oberfläche aufgrund der Texte vorstellen können. Um das zu erreichen, müssen Entwickler der Eigenschaft accessibleRoleDescription einen Text zuweisen, der die Funktion einer Programmoberflächenkomponente beschreibt.

searchInputArea.setAccessibleRoleDescription("Bitte Suchbegriff eingeben. Suche starten mit der Enter-Taste");

Wenn das Eingabefeld searchInputArea den Fokus bekommt, liest der Screenreader den Text "Bitte Suchbegriff eingeben. Suche starten mit der Enter-Taste" vor. Damit er weiß, dass searchInputArea ein Eingabefeld ist, müssen Entwickler ihm eine Rolle zuweisen. Das geschieht mit der Eigenschaft AccessibleRole:

searchInputArea.setAccessibleRole(AccessibleRole.TEXT_FIELD);

Wenn die beiden Eigenschaften AccessibleRoleDescription und AccessibleRole gesetzt sind, lässt sich die JavaFX-Anwendung mit einem Screenreader lesen.

Für blinde, aber auch für viele sehbehinderte Menschen ist es unabdingbar, dass eine Software komplett per Tastatur bedienbar ist. Sie wissen nicht, an welcher Position sich der Mauszeiger auf dem Monitor befindet. Deswegen können sie ihn auch nicht an eine bestimmte Position auf dem Monitor bewegen. Das bedeutet, dass blinde Menschen eine Software mit einer Computermaus gar nicht bedienen können.

Deswegen ist es für blinde und viele sehbehinderte Menschen eine Grundvoraussetzung, dass sie eine Software nur per Tastatur nutzen können. Als Erstes ist deswegen zu überprüfen, ob sich per Tabulatortaste jedes Bedienelement erreichen lässt. Danach sollte dafür gesorgt werden, dass die wichtigsten Programmfunktionen und Menüs Tastenkürzel oder Shortcuts besitzen.

Folgendes Codebeispiel zeigt das Erstellen eines Menü-Shortcuts:

Menu editMenu = new GermanModifierMenu("_Bearbeiten");
MenuItem undo = new MenuItem("_Rückgängig");
undo.setAccelerator(new KeyCodeCombination(KeyCode.Z, KeyCombination.CONTROL_DOWN));
editMenu.getItems().add(undo);

Hier wird dem Menü "Rückgängig" der Shortcut Strg + Z zugewiesen.

Beschriftungen von Eingabefeldern sollten immer links vom Eingabefeld sein, weil die Leserichtung auch bei Screenreadern von links nach rechts ist. Damit der Reader weiß, welche Beschriftung zu welchem Eingabefeld gehört, müssen die beiden miteinander verknüpft sein. Das geschieht mit dem Java-Befehl setLabelFor:

Label searchLabel = new Label("_Suchen:");
TextField searchInputArea = new TextField("");
searchLabel.setMnemonicParsing(true);
searchLabel.setLabelFor(searchInputArea);

Hier wird ein Label mit dem Text "Suchen" mit einem Eingabefeld searchInputArea verknüpft. Wenn man nun das Label mit der Tastenkombination Alt + S aktiviert, bekommt das mit setLabelFor verknüpfte Eingabefeld den Eingabefokus.