Re: Printable character as JMenuItem accelerator not properly consumed
Martin wrote:
Andrew Thompson wrote:
Martin Wrote
I am using a simple character (e.g. 'n') without a CTRL or ALT
mask as acceleator for a JMenuItem. ... When I access this
function through the accelerator the key is not consumed before
the editing mode is entered, i.e. the 'n' appears in the input
field.
Generally an SSCCE* will get more and faster attention than code
snippets.
Agreed, but I don't see how I can break this down into a few lines of
code.
Are you sure you aren't being just a bit lazy? Here's an SSCCE that
illustrates what you describe:
---------------------------- 8< ----------------------------------
public class TestAccellerator2 {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new TestAccellerator2();
}
});
}
TestAccellerator2() {
JTextArea area = new JTextArea(5,40);
JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu("Do");
JMenuItem item = new JMenuItem("Nothing");
item.setMnemonic(KeyEvent.VK_N);
item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, 0));
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand()+" pressed.");
}
});
menu.add(item);
bar.add(menu);
JPanel p = new JPanel();
p.add(area);
JFrame f = new JFrame("Test Menu Accelerator");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setJMenuBar(bar);
f.add(p);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
---------------------------- 8< ----------------------------------
I've no idea what you mean by "table.startEditingAt(42,0,0);" but it
appears to be irrelevant.
--
RGB