Skip to content

Instantly share code, notes, and snippets.

@matthijskooijman
Created December 10, 2015 09:23
Show Gist options
  • Save matthijskooijman/4d016e7a9e3fb07d0699 to your computer and use it in GitHub Desktop.
Save matthijskooijman/4d016e7a9e3fb07d0699 to your computer and use it in GitHub Desktop.
Testcase for java keybinding / keyboard layout problem
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class Item extends JMenuItem {
public void addNotify() {
System.out.println("Add\n");
}
public Item(String s) { super(s); }
}
public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame();
JMenuBar bar = new JMenuBar();
JButton button = new JButton("Button Ctrl-Z");
JTextArea text = new JTextArea("");
JMenu menu = new JMenu("Menu");
JMenuItem item1 = new Item( "Item 1" );
JMenuItem item2 = new JMenuItem( "Item 2" );
item1.addActionListener((ActionEvent e) -> text.append("Menuitem 1\n"));
item2.addActionListener((ActionEvent e) -> text.append("Menuitem 2\n"));
button.addActionListener((ActionEvent e) -> text.append("Button click\n"));
item1.setAccelerator(KeyStroke.getKeyStroke('Q', KeyEvent.CTRL_MASK));
item2.setAccelerator(KeyStroke.getKeyStroke('W', KeyEvent.CTRL_MASK));
KeyStroke keyStroke = KeyStroke.getKeyStroke('Z', KeyEvent.CTRL_MASK);
ActionListener action = (ActionEvent) -> text.append("Button key\n");
button.registerKeyboardAction(action, "action", keyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
menu.add(item1);
menu.add(item2);
bar.add(menu);
text.setEnabled(false);
frame.setLayout(new BorderLayout());
frame.add(button, BorderLayout.SOUTH);
frame.add(text, BorderLayout.CENTER);
frame.setJMenuBar(bar);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(200,200);
frame.setVisible(true);
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment