我有:
for (int i = 0; i <= 9; i++) {
JButton c = new JButton();
c.setText(Integer.toString(i));
ActionListener l = new NumericButtonListener(i);
c.addActionListener(l);
buttonGrid.add(c); }
基本上,一些代码会创建一个数字网格。如何映射我的窗格以允许命中相应的数字并触发我的NumericButtonListener?
答案 0 :(得分:2)
您可以使用keyBindings
并为特定密钥指定一个公共Action
。
使用按钮的doClick()
函数生成一个Action事件并监听它。您需要在按下映射键的特定按钮上调用此函数。例如:
Action generateClick = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
JButton butt = (JButton) e.getSource();
butt.doClick();
}
};
答案 1 :(得分:0)
对每个按钮使用keyBinding。见tutorial for KeyBindings
例如,在创建中添加下一个代码:
c.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(Integer.toString(i)), "doSomething");
c.getActionMap ().put("doSomething", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println(c.getText());
}
});