【问题标题】:Why are the options reversed in my JOptionPane?为什么我的 JOptionPane 中的选项颠倒了?
【发布时间】:2012-09-05 03:00:41
【问题描述】:

我正在 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 有关。谢谢!

【问题讨论】:

  • 不要摆弄顺序 - 很高兴 LAF 接管任务以遵守平台用户体验指南 :-)
  • 谢谢!当我创建自己的框架并将按钮放入其中时,我没有看到这种行为,只有当我使用JOptionPane 时。这是我第一次在不同平台上测试我的应用程序,所以我很惊讶地看到这种行为发生。
  • 您可能会考虑使自定义框架/对话框中的按钮与平台兼容 :-) 不要回忆 OptionPaneUI 的内部是否可以访问以重新使用它们(可能不是) , 但有 LayoutManagers 接管 (fi MigLayout, FormLayout)

标签: java windows macos swing joptionpane


【解决方案1】:

确实是 L&F 功能执行此操作(这不是 UI 故障)。我建议不要更改它以获得更好的用户体验。用户希望应用程序在平台上保持一致。 Windows & Linux 习惯于让按钮从左到右显示,而 MacOS 习惯于让按钮从右到左显示。

这里有两个示例:

窗户:

MacOS:

看看在 MacOS 上,最重要的按钮显示在最右边,而在 Windows 上则相反。

【讨论】:

    猜你喜欢
    • 2020-11-21
    • 2021-12-11
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多