如何在一个Java应用程序中显示jFrames的多个停靠项?

如何在一个Java应用程序中显示jFrames的多个停靠项?,java,macos,swing,jframe,dock,Java,Macos,Swing,Jframe,Dock,我有一个模块化的Java应用程序:一个jar启动一个“控制面板”,用户可以从中打开几个模块。每个模块都使用自己的jFrame。可以找到关于这是一种好的做法还是一种坏的做法的讨论——在我的例子中,所有模块都相互通信,但执行不同的功能 在Windows上运行时,每个模块jFrame在任务栏上都有自己的图标,可以通过ALT选项卡进行选择。在OSX上,我只得到一个dock图标和一个Application Switcher CMD选项卡中的图标。这使得在模块之间切换非常困难,其中几个模块将在任何时候打开

我有一个模块化的Java应用程序:一个jar启动一个“控制面板”,用户可以从中打开几个模块。每个模块都使用自己的jFrame。可以找到关于这是一种好的做法还是一种坏的做法的讨论——在我的例子中,所有模块都相互通信,但执行不同的功能

在Windows上运行时,每个模块jFrame在任务栏上都有自己的图标,可以通过ALT选项卡进行选择。在OSX上,我只得到一个dock图标和一个Application Switcher CMD选项卡中的图标。这使得在模块之间切换非常困难,其中几个模块将在任何时候打开

如何将每个模块jFrame分别放在OS X dock和应用程序切换器中

有趣的是,如果我将其中一个JFrame图标化,它确实会出现在dock中,垃圾桶旁边的右侧区域


我正在使用Java7在OSX10.10Yosemite上进行测试。我制作了一个cheat's.app,它通过一个shell脚本启动jar,以便提供cmd行参数Xdock:name等和图标,所以我有一个info.plist文件。

你不能。OSX用户界面就是不能这样工作

有趣的是,如果我将其中一个JFrame图标化,它确实会出现在 码头,在垃圾桶旁边的右侧区域

这是用户可配置的。请参见首选项>停靠>将窗口最小化到应用程序停靠中

与其对抗正常的操作系统行为,不如开发自己的模块切换器功能,或许可以将其作为控制面板的一部分。您会发现,应用程序切换和停靠图标行为在不同的操作系统中差异很大。试图让OSX像Windows一样运行,或者反过来,在应用程序的边界之外运行,这将是一个非常令人头痛的问题


也就是说,如果你不想听从上面的建议,我能想到的唯一方法就是创建虚拟应用程序,它不显示任何窗口,但会显示在dock中。虚拟应用程序可以由主应用程序启动。当一个虚拟应用程序被点击时,它可以发出信号通知您的主应用程序可能正在监听一个本地开放端口,以使其中一个模块处于活动状态。这会给人一种错觉,即每个模块在船坞中都有自己的位置。这可能也适用于Alt Tab切换程序。

谢谢您的回答。我也注意到,右键单击的dock菜单实际上有一个窗口跟踪器,这正是我想要的——现在可能是一个足够好的解决方案。