Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Mac OS下以选项卡形式打开新窗口时,是否有Java/Swing错误的解决方法_Java_Macos_Swing - Fatal编程技术网

在Mac OS下以选项卡形式打开新窗口时,是否有Java/Swing错误的解决方法

在Mac OS下以选项卡形式打开新窗口时,是否有Java/Swing错误的解决方法,java,macos,swing,Java,Macos,Swing,我正在为Mac和Windows开发一个基于swing的Java应用程序(Java8)。一些用户已将“常规”“打开文档时首选选项卡”下的mac系统首选项设置为“始终”或“全屏”。当设置设置为“从不”时,它将正常工作 此设置会导致窗口打开一个新选项卡的奇怪状态,导致冻结的应用程序只能强制退出。我不能假设用户知道Mac OS系统首选项中的隐藏设置 有三种解决方案对我有效: 是否找到任何解决方法来防止该窗口以选项卡形式打开其他窗口 启动我们的捆绑Java应用程序时,会使用一些标记来禁用整个应用程序

我正在为Mac和Windows开发一个基于swing的Java应用程序(Java8)。一些用户已将“常规”“打开文档时首选选项卡”下的mac系统首选项设置为“始终”或“全屏”。当设置设置为“从不”时,它将正常工作

此设置会导致窗口打开一个新选项卡的奇怪状态,导致冻结的应用程序只能强制退出。我不能假设用户知道Mac OS系统首选项中的隐藏设置

有三种解决方案对我有效:

  • 是否找到任何解决方法来防止该窗口以选项卡形式打开其他窗口
  • 启动我们的捆绑Java应用程序时,会使用一些标记来禁用整个应用程序的这种行为
  • 检测此mac系统设置是否已启用,然后警告用户并退出应用程序(这不是一个好的解决方案)

Big-Sur的这一变化导致了Java中的一个bug

在MacOS终端窗口中有一个变通方法,您可以运行

defaults write net.java.openjdk.cmd "AppleWindowTabbingMode" manual
或者,如果您在自己的应用程序中捆绑了java,请在应用程序Info.plist文件中使用CbundleIdentifier的值

e、 g


我意识到这是一个愚蠢的、反问的问题,但是,您确定问题不在您的[java]代码中吗?您的Swing应用程序是否使用?从您问题中的屏幕截图我不清楚,但是您的Swing应用程序是否包含
JTabbedPane
?是的,不是这样。当我将mac设置更改为“打开窗口时首选选项卡”为“从不”时,窗口将作为一个单独的窗口打开(如预期)。尽管如此,考虑张贴A,以便其他人能够重现你的问题,这可能会帮助某人找到解决方案。我可以确认这是一个问题,我也有,因为更新到BigSur,这不是一个问题,在代码中,很抱歉,除了将prefertabs选项设置为never的变通方法之外,我目前没有任何解决方案。我们现在将捆绑的JDK更新为Java15,并且在大多数情况下,问题已经解决。有时,虽然新的JDialogs仍然以选项卡的形式打开,但我不知道原因是什么。这是目前最好的解决方法,但三个选项是“始终”、“全屏”或“手动”(而不是“从不”)。我们正在使用一个捆绑的JRE,因此我们必须用我们的mac CbundleIdentifier交换“net.java.openjdk.cmd”,谢谢您的更正
defaults write net.myapp.com "AppleWindowTabbingMode" manual