import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.SwingUtilities; import com.apple.eawt.AboutHandler; import com.apple.eawt.AppEvent.AboutEvent; import com.apple.eawt.AppEvent.PreferencesEvent; import com.apple.eawt.AppEvent.QuitEvent; import com.apple.eawt.Application; import com.apple.eawt.PreferencesHandler; import com.apple.eawt.QuitHandler; import com.apple.eawt.QuitResponse; public class MacMenuLeiste { public MacMenuLeiste() { init(); } private void init() { if (getOS().equals("mac")) { new MacImpl(); } JMenuBar mBar = new JMenuBar(); JMenu fileMenu = new JMenu("Datei"); JMenuItem quitItem = new JMenuItem("Beenden"); quitItem.addActionListener(e -> System.exit(0)); fileMenu.add(quitItem); mBar.add(fileMenu); JFrame frame = new JFrame("Apple Menuleiste"); frame.setJMenuBar(mBar); frame.setSize(300, 300); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } public static void main(String[] args) { if (getOS().equals("mac")) { System.getProperties().put("apple.laf.useScreenMenuBar", "true"); } SwingUtilities.invokeLater(() -> new MacMenuLeiste()); } public static String getOS() { String osname = System.getProperty("os.name"); if (osname != null && osname.toLowerCase().indexOf("mac") != -1) { return "mac"; } if (osname != null && osname.toLowerCase().indexOf("windows") != -1) { return "win"; } return "noarch"; } } class MacImpl implements ClassSelector, AboutHandler, PreferencesHandler, QuitHandler { public MacImpl() { handleOS(); } public void handleOS() { try { final Application application = Application.getApplication(); application.setAboutHandler(this); application.setPreferencesHandler(this); application.setQuitHandler(this); } catch (Throwable e) { System.err.println("setupMacOSXApplicationListener failed: " + e.getMessage()); } } public void handleAbout(AboutEvent arg0) { // new AboutDialog(); System.out.println("handleAbout()"); } public void handlePreferences(PreferencesEvent arg0) { // new OptionsDialog(); System.out.println("handlePreferences()"); } public void handleQuitRequestWith(QuitEvent arg0, QuitResponse arg1) { System.exit(0); } } interface ClassSelector { public void handleOS(); }