4

OS X Mountain Lion で Java アプリケーションを開発および実行しており、カスタム ダイアログ ボックスに「はい」と「いいえ」のオプションを追加しました。しかし、Windows 7 でアプリケーションを実行すると、「はい」と「いいえ」のオプションが逆になっていることに気付きました。この UI の不具合を修正するために、次のコードを追加しました。

    String msg = "Are you sure you want to cancel the selected bookings?";
    String[] options = new String[] { "Yes", "No" };
    int noOption = 1;
    String os = System.getProperty("os.name").toLowerCase();
    if ("mac os x".equals(os)) {
      options = new String[] { "No", "Yes" };
      noOption = 0;
    }

    int option =
        JOptionPane.showOptionDialog(null, msg, "Confirm Unbooking",
            JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options,
            options[noOption]);
    if (option == noOption) {
      return;
    }

最初に説明した問題が発生した理由を誰か教えてもらえますか? アプリケーションの L&F に関係しているような気がします。ありがとう!

4

1 に答える 1

12

実際、これを実行するのは L&F 機能です (これは UI の不具合ではありません)。ユーザーエクスペリエンスを向上させるために、これを変更しないことをお勧めします。ユーザーは、アプリケーションがプラットフォーム上で一貫していることを期待しています。Windows と Linux ではボタンが左から右に表示され、MacOS ではボタンが右から左に表示されます。

ここで 2 つのサンプルを参照してください。

ウィンドウズ:

ここに画像の説明を入力

マックOS:

ここに画像の説明を入力

MacOS では最も重要なボタンが右端に表示されますが、Windows ではその逆です。

于 2012-09-12T07:33:14.507 に答える