当前位置: 首页 > 面试题库 >

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

高豪
2023-03-14
问题内容

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

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

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

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


问题答案:

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

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

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



 类似资料:
  • 问题内容: 我正在寻找模拟在Java中短时间内按住键盘键的操作。我希望下面的代码按住A键5秒钟,但是只按一次它(在记事本中测试时会产生一个“ a”)。我是否需要使用其他东西,或者我在这里使用awt.Robot类错了吗? 问题答案: Thread.sleep()阻止当前线程(按住键的线程)执行。 如果希望它在给定的时间内按住键,也许应该在并行线程中运行它。 这是一个解决Thread.sleep()问

  • 问题内容: 在Java中,我有一个程序需要连续检查用户是否按下了键。所以在伪代码中,像 提前致谢! 问题答案: 在Java中,你不检查是否有键被按下,而不是你听到秒。实现目标的正确方法是注册一个,并实现它以维持所需密钥的状态: 然后,您可以随时使用: 当然,您可以使用相同的方法来实现键映射及其包裹在状态中的状态。

  • 问题内容: 我有一个问题,甚至不知道要寻找什么才能修复。当我按下空格键时,我的整个页面都向上移动(向下滚动):我不希望这种情况发生。我的标签的样式为,如果与此有关,则该页面将没有任何滚动条。我通常很擅长执行初步的故障排除技术,但是在这种情况下,我什至不知道从哪里开始。我怎样才能停止这种行为? 附加信息:我正在使用jQuery 1.4.2 问题答案: 除非您按下按键,否则这是大多数浏览器中的预期行为

  • 注意:我也读过其他类似这个问题的帖子,但答案并不是很有帮助。我是一个新手,当谈到这些东西,所以试着给一个简单的答案或解释一下。提前感谢!

  • 问题内容: 我有一个JComboBox的子类。我尝试使用以下代码添加一个键侦听器。 但是,这不能正确检测用户何时按下一个键。实际上根本没有调用它。我添加的这个监听器是否错误?还有其他添加方式吗? 问题答案: 关键事件不是在框本身上触发的,而是在其编辑器上触发的。您需要将keyListener添加到JComboBox的编辑器中,而不是直接添加到框中: 编辑:固定方法调用。

  • 我用tkinter创建了一个文本框。当按下Ctrl返回时,以下代码将停止创建换行符。 但是,我还想在用户键入Ctrl-Return时调用一个函数。下面调用该函数,但随后创建一个换行: 如果交换第三行和第四行,则没有换行符,但也不会调用该函数。 有没有一种既防止换行符又调用函数的方法?