Re: menu accelerator
- From: Chameleon <cham_gss@xxxxxxxxxxx>
- Date: Tue, 21 Aug 2007 17:05:38 +0300
Chameleon wrote:Andrew Thompson wrote:
Paste an SSCCE here and we
might be able to see what you are doing wrong,
I am trying to say, how can I assign the "F1" accelerator to a menuitem. The following code doesn't work:
---------------------
JMenuBar jmb = new JMenuBar();
JMenu jm = new JMenu("Help");
JMenuItem jmi = new JMenuItem("Help Index");
jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
jmi.addActionListener(listener);
jm.add(jmi);
jmb.add(jm);
---------------------
I don't want "Shift+F1", "Ctrl+F1", etc. I want "F1".
Thats not an SSCCE!
You have a bug in the code you are *not* showing us.
Here's a working SSCCE based on your snippet:
-----------------------------------------8<-----------------------------------
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
public class TestAccellerator implements ActionListener {
TestAccellerator() {
// So I don't need to edit Chameleon's code at all
ActionListener listener = this; // ick.
// Chameleon's snippet *exactly* as in newsgroup
JMenuBar jmb = new JMenuBar();
JMenu jm = new JMenu("Help");
JMenuItem jmi = new JMenuItem("Help Index");
jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
jmi.addActionListener(listener);
jm.add(jmi);
jmb.add(jm);
// end of Chameleon's snippet
JPanel p = new JPanel();
p.add(new JLabel("Panel"));
JFrame f = new JFrame("Test Accellerator");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(p);
f.setJMenuBar(jmb);
f.pack();
f.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
System.out.printf("Event: command '%s' from object '%s'\n", e
.getActionCommand(), e.getSource());
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new TestAccellerator();
}
});
}
}
-----------------------------------------8<-----------------------------------
When I press F1 I get the output I expected.
I dont know what is SSCCE but now I know.
Holy Sh*t!
F1 working!
I am dump and I spend your time for nothing!
I found a clause "if (key == 0 || modifier == 0) ..." in my code...
What a SHAME.
Sorry.
.
- References:
- menu accelerator
- From: Chameleon
- Re: menu accelerator
- From: Chameleon
- Re: menu accelerator
- From: RedGrittyBrick
- menu accelerator
- Prev by Date: Re: menu accelerator
- Next by Date: Re: which GUI library to use??
- Previous by thread: Re: menu accelerator
- Next by thread: default button in JDialog
- Index(es):