Java - JTextField - 当用户按“空格键”时调用函数

时间:2014-08-22 12:51:42

标签: java swing jtextfield keylistener

我进行了一些搜索,当用户按下键#34;空格键"时,我找不到如何调用函数,我有这个代码:

edtCodigos.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_SPACE){
            callFunction();
        }
    }
)};

注意:我想避开"空格",该键只用于调用函数

任何想法我该怎么做或代码样品将不胜感激;)

1 个答案:

答案 0 :(得分:4)

  

“用户习惯于输入”空格键“来完成收银员付款等操作。”

就个人而言,我只会使用ActionListener,以便 Enter 键触发事件。这似乎更自然。

import java.awt.event.*;
import javax.swing.*;

public class TestTextField {

    public static void main(String[] args) {
        final JTextField field = new JTextField(15);
        field.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                System.out.println("Enter Pressed: " + field.getText());
            }
        });
        JOptionPane.showMessageDialog(null, field);
    }
}

如果您想使用 Space ,可以使用Key Bindings

将字段绑定到字段
import java.awt.event.ActionEvent;
import javax.swing.*;

public class TestTextField {

    public static void main(String[] args) {
        final JTextField field = new JTextField(15);
        InputMap imap = field.getInputMap(JComponent.WHEN_FOCUSED);
        imap.put(KeyStroke.getKeyStroke("SPACE"), "spaceAction");
        ActionMap amap = field.getActionMap();
        amap.put("spaceAction", new AbstractAction(){
            public void actionPerformed(ActionEvent e) {
                System.out.println("Space Pressed: " + field.getText());
            }
        });
        JOptionPane.showMessageDialog(null, field);
    }
}

您甚至可以使用DocumentListener来监听文本字段的基础文档中的更改,并检查输入的最后一个字符是否为空格(但这看起来有点多 - 只是一些有关您学习文本组件工作的信息: - )

挑选你的味道。我喜欢第一个。