0

在 Mac 上的 Java 应用程序中,您可以单击顶部栏并选择退出以退出程序。如何向我的 JFrame 添加一个监听器来收听这个?

我对此进行了搜索并找到了 ApplicationListener,但是 Eclipse 在其中放置了一个“叉号”,并且似乎认为它已被弃用。

具体来说,我发现使用 com.apple.eawt.ApplicationListener,但我该怎么做呢?我需要下载这个 com.apple.eawt 包吗?我似乎找不到它。

4

6 回答 6

1

对于 Java 7,QuitHandler 是要实现的接口。

import com.apple.eawt.QuitHandler;
import com.apple.eawt.Application;

在某处,执行以下操作:

Application macApp = Application.getApplication();
macApp.setQuitHandler(this);

接着 ,

@Override
public void handleQuitRequestWith(AppEvent.QuitEvent qe,final QuitResponse qr) {
    System.out.println("quit clicked");
    qr.performQuit();

}

我从 CodeGuy 和以下网址得到提示 http://cr.openjdk.java.net/~michaelm/7113349/jdk8/webrev.4/jdk/raw_files/new/src/macosx/classes/com/apple/eawt/应用程序.java

于 2014-02-11T10:00:24.740 回答
1

答案是使用更新版本的 QuitHandler,可从 Apple Java 扩展中获得

于 2012-04-09T16:28:19.993 回答
1

你需要注册一个ApplicationListener:

Apple 提供了一个示例应用程序:

http://developer.apple.com/library/mac/#samplecode/OSXAdapter/Introduction/Intro.html

于 2012-04-09T16:15:53.737 回答
0

当像这样单击划掉按钮时,您可以捕捉到

frame.addWindowListener(new ExitListener());
然后你可以像这样覆盖它
 public class ExitListener extends WindowAdapter{
        public void windowClosing(WindowEvent e){
            //some codes
        }
    }

于 2012-04-09T16:28:41.207 回答
0

为了不破坏与 Windows 和其他操作系统的兼容性,这里采用另一种方法:

http://javadots.blogspot.com/2010/09/making-your-swing-app-macosx-compliant.html

Maven依赖:

<dependency>
    <groupId>org.simplericity.macify</groupId>
    <artifactId>macify</artifactId>
    <version>1.6</version>
</dependency>
于 2015-06-30T15:08:40.937 回答
0

在 Java 9 中,您应该使用跨平台的桌面 API,因为 Mac EAWT API 已被弃用:

if (Desktop.isDesktopSupported()) {
    Desktop desktop = Desktop.getDesktop();
    desktop.setQuitHandler(new QuitHandler()
    {
        @Override
        public void handleQuitRequestWith(QuitEvent evt, QuitResponse res)
        {
            // TODO: Handle the quit request
            // res.cancelQuit();  // Cancel the quit request
        }
    });
}
于 2018-04-03T20:01:06.810 回答