|
|
@ -15,6 +15,10 @@ import java.lang.reflect.Method; |
|
|
|
import java.lang.reflect.Proxy; |
|
|
|
import java.lang.reflect.Proxy; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
|
|
|
|
* com.apple.eawt.Application属于jdk1.8及以下mac jdk特有的api |
|
|
|
|
|
|
|
* 在jdk9中被移除,由Desktop.getDesktop().setQuitHandler等jdk9.0引入的新api替代 |
|
|
|
|
|
|
|
* 参见 https://stackoverflow.com/questions/38381824/how-can-i-use-apple-com-apple-eawt-functionality-on-java-8
|
|
|
|
|
|
|
|
* |
|
|
|
* @author hades |
|
|
|
* @author hades |
|
|
|
* @version 10.0 |
|
|
|
* @version 10.0 |
|
|
|
* Created by hades on 2020/3/13 |
|
|
|
* Created by hades on 2020/3/13 |
|
|
@ -33,6 +37,8 @@ public class MacOsAddListenerAction implements OSBasedAction { |
|
|
|
Reflect.on(application).call("setQuitHandler", quitInstance) |
|
|
|
Reflect.on(application).call("setQuitHandler", quitInstance) |
|
|
|
.call("setAboutHandler", aboutInstance); |
|
|
|
.call("setAboutHandler", aboutInstance); |
|
|
|
} catch (ClassNotFoundException e) { |
|
|
|
} catch (ClassNotFoundException e) { |
|
|
|
|
|
|
|
// 上面的不能移除,同时要保证再jdk1.8下面能运行
|
|
|
|
|
|
|
|
// 抛出异常时 说明使用>=jdk9运行行设计器,但由于编译使用1.8构建,使用反射运行
|
|
|
|
try { |
|
|
|
try { |
|
|
|
Class quitHandler = Class.forName("java.awt.desktop.QuitHandler"); |
|
|
|
Class quitHandler = Class.forName("java.awt.desktop.QuitHandler"); |
|
|
|
Object quitInstance = getProxy(quitHandler, "handleQuitRequestWith", new QuitAction()); |
|
|
|
Object quitInstance = getProxy(quitHandler, "handleQuitRequestWith", new QuitAction()); |
|
|
|