Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why are the options reversed in my JOptionPane?

I am developing and running my Java application on OS X Mountain Lion, and I added "Yes" and "No" options to a custom dialog box. However, when I ran my application on Windows 7, I noticed that the "Yes" and "No" options were reversed. To fix this UI glitch, I added this code:

    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;
    }

Can someone tell me why I experienced the issue that I described in the first place? I have a feeling that it has to do with the L&F of the application. Thanks!

like image 496
BJ Dela Cruz Avatar asked Dec 15 '22 19:12

BJ Dela Cruz


1 Answers

It is indeed a L&F feature that performs this (this is not a UI glitch). I would recommend not to change that for a better user-experience. Users expect application to be consistent on a platform. Windows & Linux are used to have buttons displayed from left to right, while MacOS are used to have buttons displayed from right to left.

See here two samples:

Windows:

enter image description here

MacOS:

enter image description here

See how on MacOS, the most important button is displayed on the far right, while it is the opposite on Windows.

like image 66
Guillaume Polet Avatar answered Dec 18 '22 08:12

Guillaume Polet