platformapple.java

来自「android_UPNP_DLNA_控制点」· Java 代码 · 共 88 行

JAVA
88
字号
/* * Copyright (C) 2010 Teleal GmbH, Switzerland * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program.  If not, see <http://www.gnu.org/licenses/>. */package org.teleal.cling.support.shared;import org.teleal.common.swingfwk.Controller;import javax.swing.JFrame;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * @author Christian Bauer */public class PlatformApple {    public static void setup(final Controller<JFrame> appController, String appName) throws Exception {        System.setProperty("apple.laf.useScreenMenuBar", "true");        System.setProperty("com.apple.mrj.application.apple.menu.about.name", appName);        System.setProperty("apple.awt.showGrowBox", "true");        // Use reflection to avoid compile-time dependency        Class appClass = Class.forName("com.apple.eawt.Application");        Object application = appClass.newInstance();        Class listenerClass = Class.forName("com.apple.eawt.ApplicationListener");        Method addAppListmethod = appClass.getDeclaredMethod("addApplicationListener", listenerClass);        // creating and adding a custom adapter/listener to the Application        Class adapterClass = Class.forName("com.apple.eawt.ApplicationAdapter");        Object listener = AppListenerProxy.newInstance(adapterClass.newInstance(), appController);        addAppListmethod.invoke(application, listener);    }    static class AppListenerProxy implements InvocationHandler {        private Controller<JFrame> appController;        private Object object;        public static Object newInstance(Object obj, Controller<JFrame> appController) {            return Proxy.newProxyInstance(                    obj.getClass().getClassLoader(),                    obj.getClass().getInterfaces(),                    new AppListenerProxy(obj, appController)            );        }        private AppListenerProxy(Object obj, Controller<JFrame> appController) {            this.object = obj;            this.appController = appController;        }        public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {            Object result = null;            try {                if ("handleQuit".equals(m.getName())) {                    if (appController != null) {                        appController.dispose();                        appController.getView().dispose();                    }                } else {                    result = m.invoke(object, args);                }            } catch (Exception e) {                // Ignore            }            return result;        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?