所以我有一个提交按钮,其中ActionEvent
包含大约50行代码。当检测到按下Enter键时,如何为“{1}}”提供与ActionEvent
完全相同的JFrame
?这就是我的提交按钮的ActionEvent
看起来像
btnSubmit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// miscellaneous code that needs to be repeated for 'Enter' key press
}
});
为提交JFrame提供与提交按钮相同的ActionEvent
的代码是什么以及在哪里?
答案 0 :(得分:3)
首先查看How to Use Root Panes,特别是JRootPane#setDefaultButton
当您拥有可能使用 Enter 键的组件(如文本字段)时,您可能需要考虑使用键绑定API
InputMap im = getInputMap(WHEN_IN_FOCUSED_WINDOW);
ActionMap am = getActionMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Enter.pressed");
am.put("Enter.pressed", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
btnSubmit.doClick();
}
});
现在,我现在可以考虑制作一个Action
,它同时应用于JButton
和键绑定
有关详细信息,请查看How to Use Key Bindings和How to Use Actions
答案 1 :(得分:0)
我不知道是否有更正确的摆动方式,但这应该可以解决问题:
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
//...
}
}
btnSubmit.addActionListener(listener);
btnEnter.addActionListener(listener);
答案 2 :(得分:0)
执行此操作的一种方法是在“提交”按钮上使用.doClick()
方法并创建KeyAdapter
:
KeyAdapter Enter = new KeyAdapter(){
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
btnSubmit.doClick();
}
}
};
txtField1.addKeyListener(Enter);
txtField2.addKeyListener(Enter);