Java-JTextField-用户按下“空格键”时的调用功能

发布于 2021-01-29 19:59:03

我进行了一些搜索,但是当用户按下“空格键”键时,我没有找到如何调用函数的命令,我得到了以下代码:

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

注意:我想避免使用“空格”,该键将仅用于调用该函数

任何想法我怎么做或代码示例将不胜感激;)

关注者
0
被浏览
104
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    “用户习惯于键入“空格键”来完成诸如在收银员处付款之类的操作。”

    就个人而言,我只需要使用一个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,可以使用“
    键绑定”键绑定到字段

    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侦听文本字段的基础文档中的更改,并检查最后输入的字符是否为空格(但这似乎有点多-
    只是一些信息供您学习工作原理对于文本组件:-)

    选择你的口味。我喜欢第一个。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看