小编典典

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

java

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

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

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

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


阅读 267

收藏
2020-11-30

共1个答案

小编典典

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

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

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

2020-11-30