2

アクセシビリティの問題について、会社で確立された Swing アプリケーションをテストしています。PC でハイ コントラスト モードを有効にすると、このアプリケーションの特定の部分が正しく (黒地に白) レンダリングされ、一部が正しくレンダリングされません (白地に黒)。

正しいビットは、ネイティブ コンポーネント (JButton、JLabel など) と、JIDE などのサード パーティ コンポーネントです。不正なビットは、ハイ コントラスト モードを考慮せずに社内で開発されたカスタム コンポーネントとレンダラーです。

ハイ コントラスト モードが有効になっていることを検出できることは明らかです。どうすればいいですか?

4

3 に答える 3

4

この目的のために、win.highContrast.onプロパティがJava1.4.1で追加されたことがわかります。

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

これはWindowsでのみ機能します(したがってwin.プレフィックス)。LinuxとMacではhighContrastnullになります。最初にプラットフォームチェックを実行するか、でnullチェックを実行するのが最も安全ですhighContrast

于 2009-06-30T10:02:13.467 に答える
2

このリンクからの抜粋:http ://www.section508.gov/IRSCourse/mod02/printJava.html

「Windowsソフトウェアは、SPI_GETHIGHCONTRAST値を使用してSystemParametersInfo関数を呼び出すことにより、高コントラスト設定を確認できます。アプリケーションは、初期化中およびWM_COLORCHANGEメッセージの処理時にこの値を照会およびサポートする必要があります。」

これは、Win32 APIを介してアクセスするためのものです:http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx(ただし、その分野ではあまり良くないので、誰かを期待する方法は完全にはわかりません完了できます)

于 2009-06-30T09:44:36.077 に答える
0

試しましたか

Toolkit.getDefaultToolkit().getColorModel()
于 2009-06-30T09:46:13.513 に答える