Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Awesomeness

macrumors member
Original poster
Feb 12, 2009
73
0
In a a java menu bar, the setMnemonic() method doesn't take a char anymore, it takes an int. They say this is better. WTF? How am I supposed to show a character with an int? Is it the octal character codes?
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
java.awt.event.KeyEvent has static int fields to pass to setMnemonic that corresponds to keys. If I read properly, casting an alphanumeric ASCII character to an int will be equivalent, but for others the members of KeyEvent should be used.

Docs are your friend. I'd post links, but posting from the phone. The javax.swing.AbstractButton doc describes how to use this.

-Lee
 

Awesomeness

macrumors member
Original poster
Feb 12, 2009
73
0
Yeah

java.awt.event.KeyEvent has static int fields to pass to setMnemonic that corresponds to keys. If I read properly, casting an alphanumeric ASCII character to an int will be equivalent, but for others the members of KeyEvent should be used.

Docs are your friend. I'd post links, but posting from the phone. The javax.swing.AbstractButton doc describes how to use this.

-Lee

I always look at the docs. Usually they help... But they didn't this time. I'll try again.
 

Awesomeness

macrumors member
Original poster
Feb 12, 2009
73
0
I always look at the docs. Usually they help... But they didn't this time. I'll try again.

Here's my code. I made it a while ago. I still doesn't work >.<

Code:
		open = new JMenuItem("Open Command...");
		open.setMnemonic(KeyEvent.VK_O);
		open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
			    Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
		fileMenu.add(open);
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
What happens? Does cmd+O do anything? What should happen when the menu item is selected? Maybe adding the additional code that deals with O is mucking things up?

-Lee
 

Awesomeness

macrumors member
Original poster
Feb 12, 2009
73
0
What happens? Does cmd+O do anything? What should happen when the menu item is selected? Maybe adding the additional code that deals with O is mucking things up?

-Lee

As of now, there is no action listener. Even with one I still don't get any sign of command O doing anything. Even without an action listener it should just flicker blue when I press command O, but not do anything. There is nothing else which could mess it up. I tried removing the additional code. Nothing. I got the additional code and thought it did what it was supposed to do. I got the code I thought was going to do it from http://developer.apple.com/document...ormIntegration/NativePlatformIntegration.html
The only progress I've made is making it show the command symbol (⌘) on the menu.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
For kicks you might check to see if:
KeyEvent.VK_O == (int)'O'
Or
KeyEvent.VK_O == (int)'o'

That's more just for your own edification. You might also try passing (int)'O' to setMnemonic to see if that works.

-Lee

Edit: after reading the link you posted, it looks like setMnemonic is discouraged, and just the setAccelerator should do. If the item does nothing, how do you know if it was "pressed" or not?
 

Awesomeness

macrumors member
Original poster
Feb 12, 2009
73
0
Yes!

For kicks you might check to see if:
KeyEvent.VK_O == (int)'O'
Or
KeyEvent.VK_O == (int)'o'

That's more just for your own edification. You might also try passing (int)'O' to setMnemonic to see if that works.

-Lee

Edit: after reading the link you posted, it looks like setMnemonic is discouraged, and just the setAccelerator should do. If the item does nothing, how do you know if it was "pressed" or not?

I got it! The correct code snippet is:
Code:
		//Create the menu bar.
		menuBar = new JMenuBar();
		int mask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();

		//Build the first menu.
		fileMenu = new JMenu("File");
		fileMenu.getAccessibleContext().setAccessibleDescription("File");
		menuBar.add(fileMenu);

		//a group of JMenuItems
		open = new JMenuItem("Open Command...");
		open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, mask));
		open.addActionListener(this);
		fileMenu.add(open);
		fileMenu.addSeparator();
Yeah... It works! I tried it with an ActionListener! The top bar doesn't flicker blue when you use the hotkey though... You'd have to click on it to make it do that.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.