Java Swing-在Mac上,侦听退出事件
在Mac上的Java应用程序中,您可以单击顶部栏并选择退出退出程序。如何将侦听器添加到JFrame中以侦听此消息 我对此进行了搜索,找到了ApplicationListener,但Eclipse在其中加了一个“叉号”,似乎认为它已被弃用Java Swing-在Mac上,侦听退出事件,java,macos,Java,Macos,在Mac上的Java应用程序中,您可以单击顶部栏并选择退出退出程序。如何将侦听器添加到JFrame中以侦听此消息 我对此进行了搜索,找到了ApplicationListener,但Eclipse在其中加了一个“叉号”,似乎认为它已被弃用 具体来说,我发现可以使用com.apple.eawt.ApplicationListener,但我该如何做到这一点?我需要下载这个com.apple.eawt包吗?我似乎找不到它。您需要注册一个ApplicationListener: Apple提供了一个示例应
具体来说,我发现可以使用com.apple.eawt.ApplicationListener,但我该如何做到这一点?我需要下载这个com.apple.eawt包吗?我似乎找不到它。您需要注册一个ApplicationListener: Apple提供了一个示例应用程序:
您需要注册一个ApplicationListener: Apple提供了一个示例应用程序:
答案是使用更新版本的QuitHandler,可从Apple Java extension获得答案是使用更新版本的QuitHandler,可从Apple Java extension获得当您像这样单击划掉按钮时,您可以捕捉到
frame.addWindowListener(new ExitListener());
然后你可以像这样覆盖它当你像这样点击划掉按钮时,你可以捕捉到它
frame.addWindowListener(new ExitListener());
public class ExitListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
//some codes
}
}
然后您可以像这样覆盖它,对于Java 7,QuitHandler是要实现的接口
public class ExitListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
//some codes
}
}
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和下面的url得到了提示
对于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和下面的url得到了提示
为了不破坏与Windows和其他操作系统的兼容性,这里有另一种方法: Maven依赖项:
<dependency>
<groupId>org.simplericity.macify</groupId>
<artifactId>macify</artifactId>
<version>1.6</version>
</dependency>
org.simplericity.macify
玷污
1.6
为了不破坏与Windows和其他操作系统的兼容性,这里有另一种方法:
Maven依赖项:
<dependency>
<groupId>org.simplericity.macify</groupId>
<artifactId>macify</artifactId>
<version>1.6</version>
</dependency>
org.simplericity.macify
玷污
1.6
在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
}
});
}
在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
}
});
}
这对Quit不起作用,我担心:窗口没有真正“关闭”,因此没有调用侦听器。这对Quit不起作用,我担心:窗口没有真正“关闭”,因此没有调用侦听器。