2009-06-30 6 views
2

Ich teste die etablierte Swing-Anwendung meines Unternehmens auf Barrierefreiheitsprobleme. Bei aktiviertem High Contrast-Modus werden auf meinem PC bestimmte Teile dieser Anwendung richtig wiedergegeben (weiß-auf-schwarz) und einige nicht korrekt (schwarz-auf-weiß).Wie erkenne ich, ob sich ein Display im High Contrast-Modus befindet?

Die Bits, die korrekt sind, sind die nativen Komponenten (JButton, JLabel und whatnot) und Komponenten von Drittanbietern wie JIDE. Bei den inkorrekten Bits handelt es sich um benutzerdefinierte Komponenten und Renderer, die ohne Berücksichtigung des kontrastreichen Modus intern entwickelt wurden.

Klar ist es möglich zu erkennen, wenn der Hochkontrastmodus aktiviert ist. Wie mache ich das?

Antwort

4

Es stellt sich heraus Versuchen Die Eigenschaft win.highContrast.on wurde zu diesem Zweck in Java 1.4.1 hinzugefügt.

public static void main(String[] args) { 
    Toolkit toolkit = Toolkit.getDefaultToolkit(); 
    Boolean highContrast = (Boolean)toolkit.getDesktopProperty("win.highContrast.on"); 
} 

Dies funktioniert nur unter Windows (daher das Präfix win.). Auf Linux und Mac highContrast wird Null sein. Es wird am sichersten sein, zuerst einen Plattform-Check oder einen Null-Check auf highContrast durchzuführen.

+0

Sicherlich die Tatsache, dass diese Eigenschaft mit "win" beginnt. bedeutet, dass Sie keinen Plattformcheck durchführen müssen ..? Was ist die Wahrscheinlichkeit, dass eine andere Plattform diese Eigenschaft hat? – Trejkaz

+0

Eine Überprüfung ist erforderlich, da highContrast auf anderen Plattformen null ist, da das Flag nicht vorhanden ist. Windows wird entweder Boolean.TRUE oder Boolean.FALSE haben. – Keilly

2

Auszug aus diesem Link: „. Windows-Software für die hohe Kontrasteinstellung durch Aufrufen der Systemparameters Funktion mit dem SPI_GETHIGHCONTRAST Wert überprüfen Anwendungen sollten diesen Wert bei der Initialisierung abfragen und unterstützen und wenn WM_COLORCHANGE Verarbeitung von Nachrichten“ http://www.section508.gov/IRSCourse/mod02/printJava.html

Dies ist über die Win32-API zuzugreifen: http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx (nicht ganz sicher, wie die Hoffnung jemand aber nicht wirklich gut in diesem Bereich, führen kann)

+0

Googling für SPI_GETHIGHCONTRAST führte mich zu meiner Antwort, also danke. – banjollity

0

Sie

Toolkit.getDefaultToolkit().getColorModel() 
Verwandte Themen