Frage an accessibility, java, high-contrast, swing – Wie erkenne ich, ob sich ein Display im kontrastreichen Modus befindet?

2

Ich teste die etablierte Swing-Anwendung meines Unternehmens auf Eingabehilfen. Wenn der kontrastreiche Modus auf meinem PC aktiviert ist, werden bestimmte Teile dieser Anwendung richtig (weiß auf schwarz) und einige falsch (schwarz auf weiß) gerendert.

Die Bits, die korrekt sind, sind die nativen Komponenten (JButton, JLabel und so weiter) und Komponenten von Drittanbietern wie JIDE. Die falschen Bits sind benutzerdefinierte Komponenten und Renderer, die im eigenen Haus ohne Berücksichtigung des kontrastreichen Modus entwickelt wurden.

Es ist eindeutig möglich zu erkennen, wann der kontrastreiche Modus aktiviert ist. Wie mache ich das?

Deine Antwort

3   die antwort
0

Hast du versucht

Toolkit.getDefaultToolkit().getColorModel()
2

Auszug aus diesem Link:http://www.section508.gov/IRSCourse/mod02/printJava.html

"Windows-Software kann die Einstellung für hohen Kontrast überprüfen, indem sie die Funktion SystemParametersInfo mit dem Wert SPI_GETHIGHCONTRAST aufruft. Anwendungen sollten diesen Wert während der Initialisierung und bei der Verarbeitung von WM_COLORCHANGE-Nachrichten abfragen und unterstützen."

So greifen Sie über die Win32-API zu:http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx (Nicht ganz sicher, wie, obwohl nicht wirklich gut in diesem Bereich, hoffe, jemand kann vervollständigen)

Wenn ich nach SPI_GETHIGHCONTRAST google, habe ich meine Antwort gefunden. Vielen Dank. banjollity
4

Zu diesem Zweck wurde in Java 1.4.1 die Eigenschaft win.highContrast.on 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 diewin. Präfix). Auf Linux und MachighContrast wird null sein. Am sichersten ist es, zuerst eine Plattformprüfung oder ein Nullcheck durchzuführenhighContrast.

Eine Überprüfung ist erforderlich, da highContrast auf anderen Plattformen null ist, da das Flag nicht vorhanden ist. Windows hat entweder Boolean.TRUE oder Boolean.FALSE. Keilly
Sicherlich die Tatsache, dass diese Eigenschaft mit "win" beginnt. bedeutet, dass Sie keine Plattformüberprüfung durchführen müssen ..? Wie stehen die Chancen, dass auf einer anderen Plattform diese Eigenschaft festgelegt wird? Trejkaz

Verwandte Fragen