我正在尝试使用ActionMap和InputMap为JFrame创建快捷方式。但是仍然无法完成这项工作。我使用AbstractAction创建了ActionMap来创建动作,并创建了InputMap来注册事件,但是不起作用
private void acoesTela(){
JPanel painel = (JPanel)this.getContentPane();
ActionMap actionMap = painel.getActionMap();
actionMap.put("consultaProdutos", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent evt) {
System.out.println("F3 is pressed");
}
});
/** registra acoes */
InputMap imap = painel.getInputMap(JPanel.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0), "consultaProdutos");
}
我解决了问题。我这样做了:我添加了一个JPanel主体,并且在此JPanel中添加了其他JPanel以及使用JPanel主体所做的操作。
这是我的工作方式。
private void acoesTela(){
ActionMap am = panelPrincipal.getActionMap();
am.put("vaiQtd", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
txtFieldQtd.requestFocus();
txtFieldQtd.selectAll();
}
});
am.put("vaiCodigo", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
txtFieldCod.requestFocus();
txtFieldCod.selectAll();
}
});
InputMap im = panelPrincipal.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_F4, 0), "vaiQtd");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0), "vaiCodigo");
}
现在一切正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句