Java: Problem mit der Menüleiste

J

JavaDev

Registriert
Thread Starter
Dabei seit
30.10.2012
Beiträge
2
Reaktionspunkte
0
Sehr geehrte Community!
Ich würde gerne ein kleines Programm schreiben und bin dabei auf ein Problem gestoßen.
Mein Anliegen wäre die Mac OS X Menüleiste. Man kann darin das Menü des Programmes einfach mit setJMenuBar(Menü); in die Mac Menüleiste auslagern.
Dies funktioniert derzeit einwandfrei. Mein Problem allerdings ist, dass ich gerne wie alle Mac Programme den Shortcut für den Befehl im Menü anzeigen lassen möchte.

Ich habe lange in google gesucht jedoch nur dies gefunden:
Code:
JMenuItem saveAsItem = new JMenuItem("Save As...");
		saveAsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, (Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())));
		saveAsItem.addActionListener(new ActionListener(  ) {
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(null, "Save As...") ;
			}
		});
Datei.add(saveAsItem);
Geladen wird dieser Code mit:
Code:
private static void initMenu() {
		SwingUtilities.invokeLater(new Runnable() {
	        public void run() {
	            try {
	            	System.setProperty("apple.laf.useScreenMenuBar", "true"); //Menübar aktivieren
	            	System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Test");
	            	UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
	            	frame.setJMenuBar(Menu.initMenu()); //Menü initialisieren
	            }
	            catch(Exception e) {
	        		frame.add(Menu.initMenu(), BorderLayout.NORTH); //Menü in das Programm direkt laden falls ein Fehler auftritt
	            }

	        }
	    });
	}
Leider funktioniert das bei mir aus irgendeinem Grund nicht.
Link zur Apple developer website wo ich dies gefunden habe: https://developer.apple.com/library/mac/#documentation/Java/Conceptual/Java14Development/07-NativePlatformIntegration/NativePlatformIntegration.html#//apple_ref/doc/uid/TP40001909-SW1
Mein verwendetes Betriebssystem ist Mac OS X 10.8.2

Eine Lösung wäre sehr nett.
Danke schon einmal im Voraus.
 
Zuletzt bearbeitet:
ich mache das unter SL (und darum Java 6) wie folgt:

Code:
jMenuItemEditData.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.META_MASK));
Ob sich das unter JDK 7 mit ML auch noch korrekt verhält, kann ich nicht sagen (sollte aber, ist ja keine Apple-spezifische Implementierung - bis auf die META_MASK, die du für WIN / Linux nicht verwenden solltest (also immer brav das OS abfragen...).

Leider gibt es aus meiner Sicht kein schönes und aktuelles L&F für Swing auf dem Mac, aber Swing ist ja eh mehr als halbtot... Falls FX auf deinem Mac läuft, solltest du vielleicht damit anfangen, das könnte ein aktuelleres UI ergeben.

Edit: Link zu FX: http://www.oracle.com/technetwork/java/javafx/downloads/index.html
 
Zuletzt bearbeitet:
Vielen Dank für die Antwort!
Werde ich gleich einmal ausprobieren ;)
 
Zurück
Oben Unten