【问题标题】:How to implement CMD + N in Java (OS X)如何在 Java (OS X) 中实现 CMD + N
【发布时间】:2011-07-22 05:18:00
【问题描述】:

我正在为 OSX 编写我的第一个 Java 应用程序。

您可能知道,OSX 中对应用程序的处理与 Windows 略有不同。 在 windows 1 中,JFrame 通常意味着这是应用程序的一个实例,所以如果我想关闭整个应用程序,我只需关闭窗口即可。

在 OSX 中,窗口和应用程序是两个独立的东西。当您关闭窗口时,应用程序会继续在后台运行。

我想做什么:

  1. 当用户点击 CMD + N 我想创建我的类应用程序的新实例

是否有类似的最佳实践?没有活动窗口时,谁必须听 Key-Stroke? main 实现的类?

【问题讨论】:

  • 为 mac osx 编程 java 应该与为 windows 编程没有什么不同。
  • 所以?当您关闭所有窗口时,应用程序仍然具有焦点并正在运行(我不知道焦点部分是否甚至可能在 Windows 下)哪个类将接收键事件?
  • 框架还在,它的概率只是不可见。除非你调用 dispose() 。看看这个函数download.oracle.com/javase/1.4.2/docs/api/javax/swing/…
  • 关闭 JFrame 仅在您将 default close operation 设置为退出时关闭应用程序,例如myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)所有平台默认关闭操作为WindowsConstants.HIDE_ON_CLOSE

标签: java macos new-window


【解决方案1】:

没有理由在 Windows 和 OSX 上有这种不同。如果您实现 Windows 所谓的多文档接口 (MDI),它在 OSX 上的工作方式与在 Windows 上的工作方式完全相同。它们看起来会有些不同,但在概念上它们是相同的。在这两种情况下,都有一个菜单栏(应用程序类)控制零个或多个文档窗口(一个 JFrame 实例)。

所以你有一个主类来创建一个应用程序,它创建你的菜单栏并开始监听击键,它还可以创建一个初始窗口,这取决于你的应用程序规则。一旦它运行,你可以监听 CMD-N 来创建新的 JFrame。

顺便说一句,在 Windows 中,1 个 JFrame 可能意味着一个单独的实例,但它并不总是意味着那个。考虑一下 Internet Explorer 创建新窗口实例的方式——如果你使用 Cntl-N 创建一个新窗口,它会与父窗口共享会话和其他资源,也就是说,它不是单独的,而只是另一个文档。同时,您可以从开始菜单启动另一个 IE 实例,它不会与其他两个正在运行的 IE 窗口共享会话或资源。然而,这三个在任务栏中看起来都像是完全独立的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2014-09-19
    相关资源
    最近更新 更多