Barrierefreiheit: barrierefreie Softwareentwicklung mit JavaFX

JavaFX gibt es seit Dezember 2008. Trotzdem ist die Dokumentation zur barrierefreien Softwareentwicklung noch sehr dünn. Deswegen wird es höchste Zeit, dass ich darüber schreibe.

Was ist JavaFX?

JavaFX ist ein Framework zur Erstellung von plattformübergreifende Java-Applikationen und grafischen Benutzeroberflächen im Fachjargon GUI. In Sachen barrierefreie Softwareentwicklung soll JavaFX Swing ablösen.

Barrierefreie Softwareentwicklung mit JavaFX

Zu Beginn ein wichtiger Unterschied:
Die Java Access Bridge , die bei der barrierefreien Softwareentwicklung mit Java Swing benötigt wurde, wird bei JavaFX nicht mehr benötigt. Dies ist eine große Verbesserung.
Die größte Herausforderung an eine Software ist, dass sie von blinden Menschen bedient werden kann. Blinde lassen sich alles vorlesen von einer Software die Screenreader heißt. Deswegen müssen Programmoberflächen in der Lage sein, Texte zu speichern die von Screenreader vorgelesen werden. Die hinterlegten Texte sollen die Programmoberfläche erklären.

Neuer Blogartikel zur Barrierefreiheit mit JavaFX

Hier gibt es einen neuen Blogartikel:
Barrierefreie Softwareentwicklung mit Java und JavaFX nach EN 301 549 und WCAG 2.2 – Anleitung 2024

Barrierefreie Programmoberfläche mit JavaFX
Barrierefreie Programmoberfläche mit JavaFX

Für Leute die lieber ein Video als einen Blogartikel zu lesen gibt es jetzt ein Youtube-Video:

Die Software Screenreader-tauglich machen

Die Eigenschaften „AccessibleRoleAccessibleRoleDescriptionAccessibleText und AccessibleHelp“ werden von Screenreadern vorgelesen, wenn sie befüllt sind. Alle Barrierefreiheit-Eigenschaften befinden sich in der Klasse javafx.scene.Node.

Die Eigenschaft „AccessibleRole“

Diese Eigenschaft beschreibt für die Barrierefreiheit die „Rolle“ einer Komponente.
Die Rolle wird von assistiven Technologien wie Screenreadern verwendet, um die Menge der Aktionen und Attribute für einen Knoten zu entscheiden.
Beispiele: btnWebAnalyse.setAccessibleRole(AccessibleRole.BUTTON);
tfWebadresse.setAccessibleRole(AccessibleRole.TEXT_FIELD);

Die Eigenschaft „AccessibleRoleDescription“

Wenn die Eigenschaft „AccessibleRoleDescription“ gesetzt ist, liest der Screenreader diese Eigenschaft vor.
Beispiele:

tfWebadresse.setAccessibleRoleDescription("Webadresse eingeben mit http://");
btnWebAnalyse.setAccessibleRoleDescription("Schalter zum Starten der Analyse auf Barrierefreiheit. Es wird die eingegebene Webadresse nach Kriterien der BITV 2.0 analysiert!");

Die Eigenschaft „AccessibleText“

In der Regel liest ein Screenreader den Inhalt des Knotens vor. Wenn diese Eigenschaft gesetzt ist, dann wird der Text dieser Eigenschaft vorgelesen.

Die Eigenschaft AccessibleHelp

Der Hilfetext enthält eine detailliertere Beschreibung für die Barrierefreiheit des Knotens. Wenn der Knoten einen Tooltipp hat, wird dieser Text standardmäßig verwendet.

Die Tastaturbedienbarkeit der Software

Damit Blinde und Sehbehinderte eine Software bedienen können, ist es wichtig, dass die ganze Software per Tastatur bedienbar ist. Dazu gehört auch, dass Beschriftungen mit Eingabefelder verknüpft sind.
Dies macht man mit LabelFor:
lblWebadresse.setLabelFor(tfWebadresse);

Damit Blinde und Sehbehinderte einzelne Eingabefelder direkt anspringen können, ist es sinnvoll den Beschriftungen Tastenkürzel hinzuzufügen.
Beispiel:
Label lblWebadresse = new Label("_Webadresse:");

Der Unterstrich vor dem Buchstaben W sorgt dafür, dass mit der Tastenkombination Alt+W die Beschriftung bzw. dass damit verbundene Eingabefeld für Webadresse angesprungen werden kann. Die Zuweisung von Tastenkürzeln mit „_“ funktioniert nur, wenn die Eigenschaft mnemonicParsing auf true gesetzt ist.

Kurzhilfe mit Tooltipps

Tooltipps sind eine gute Möglichkeit Ihrer Software kurze Hilfetexte hinzuzufügen. Das macht die Anwendung bedienungsfreundlicher.
Hier ein Beispiel:
btnWebAnalyse.setTooltip(new Tooltip("Schalter zum Starten der Analyse auf Barrierefreiheit"));

Übernahme von Barrierefreiheit-Einstellungen im Betriebssystem Windows

Menschen mit einer Sehbehinderung benötigen zum bedienen einer Software große Schriften, damit sie gut lesen können was auf dem Bildschirm zu sehen ist. Im Betriebssystem Windows bei Einstellungen -> System -> Anzeigen -> Skalierung und Anordnung -> Erweiterte Skalierungseinstellungen kann bei „Benutzerdefinierte Skalierung“ die Systemschriftgröße in Prozent angegeben werden. Diese Einstellung wird von JavaFX automatisch übernommen, ohne dass der Softwareentwickler einen bestimmten Java-Code in die Software einbauen muss.

Im Betriebssystem Windows bei Einstellungen -> Erleichterte Bedienung kann Hoher Kontrast aktiviert werden. Dieser wird von JavaFX nicht automatisch übernommen.
Mit folgendem Code kann abgefragt werden ob im Betriebssystem Windows hoher Kontrast eingestellt ist. Leider kann nicht abgefragt werden, welcher hohe Kontrast eingestellt ist. Der Code fragt ab ob hoher Kontrast eingestellt ist und jetzt dann in der Java-Anwendung den hohen Kontrast „whiteOnBlack“.


public static void main(String[] arguments) {
// Barrierefreiheit: Abfrage ob im Betriebsystem Windows hoher Kontrast
// aktiviert ist, wenn ja wird er übernommen
Toolkit toolkit = Toolkit.getDefaultToolkit();
vHighContrast = (Boolean) toolkit.getDesktopProperty("win.highContrast.on");
if (vHighContrast == true) {
System.setProperty("com.sun.javafx.highContrastTheme", "whiteOnBlack");
}
launch(); // ruft die Anwendung auf
}

Barrierefreiheit bei Java testen

Eine Java-Software automatisiert testen geht nicht. Die Kriterien sind zu komplex für eine automatisiertes Testen. Deswegen empfehle ich ein Testen nach den Richtlinien von Oracle:

Barrierefreie Softwareentwicklung mit JavaFX als Youtube-Video anhand von meinem barrierefreien JFX-Texteditor

In diesem Youtube-Video zeige ich, dass mein selbstentwickelter Texteditor mit JavaFX screenreadertauglich ist:

Viel Spaß beim anschauen.

Fachartikel auf Heise.de/Developer: Barrierefreie Software mit JavaFX

Ich habe einen Fachartikel geschrieben für die Webseite Heise.de/Developer:

Schlussbemerkung Barrierefreiheit: barrierefreie Softwareentwicklung mit JavaFX

Durch den Wegfall der Java Access Bridge hat die barrierefreie Softwareentwicklung und vor allem die Weitergabe einer Software stark vereinfacht. Ich habe eine Beispiel-Anwendung mit dem kostenlosen Screenreader NVDA getestet und es hat sehr gut funktioniert.
Leider hat Oracle gerade ein Problem die Webseiten für Accessibility bei Java zu aktualisieren. In Oracles „Java Accessibility Guide“ wird noch immer Swing empfohlen zur barrierefreien Softwareentwicklung mit Java.
Ich kann jedoch mit gutem Gewissen die Barrierefreiheit bzw. barrierefreie Softwareentwicklung mit JavaFX empfehlen.

Wenn Sie Fragen haben zur Barrierefreiheit mit JavaFX schreiben Sie mir eine Mail an info@marlem-software.de oder rufen Sie mich an: Tel: 07072/1278463. 

Autor: Markus Lemcke

Ich bin Markus Lemcke, Softwareentwickler, Webentwickler, Appentwickler, Berater und Dozent für barrierefreies Webdesign, barrierefreie Softwareentwicklung mit Java, C# und Python, Barrierefreiheit bei den Betriebssystemen Windows, Android, IOS, Ubuntu und MacOS.

Schreibe einen Kommentar