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

控制键盘输入到javafx TextField中

谷良弼
2023-03-14
问题内容

我想控制Javafx TextField中的输入,以便只允许数字输入,这样,如果超出了最大字符数,则不会对文本框进行任何更改。

编辑:根据评论中的建议,我使用了JavaFX项目负责人建议的方法。阻止输入字母非常有用。我只需要它也可以过滤特殊字符。我尝试将过滤器更改为(text.matchs(“
[0-9]”),但不允许输入退格键。

edit2:找出一个特殊字符和长度的过滤器。这是我的最终代码。感谢您的投入。

这是我创建的TextField类:

import javafx.scene.control.TextField;

public class AttributeTextField extends TextField{

    public AttributeTextField() {
        setMinWidth(25);
        setMaxWidth(25);
    }

    public void replaceText(int start, int end, String text) {
        String oldValue = getText();
        if (!text.matches("[a-z]") && !text.matches("[\\\\!\"#$%&()*+,./:;<=>?@\\[\\]^_{|}~]+")) {
            super.replaceText(start, end, text);
        }
        if (getText().length() > 2 ) {
            setText(oldValue);
        }
    }

    public void replaceSelection(String text) {
        String oldValue = getText();
        if (!text.matches("[a-z]") && !text.matches("[\\\\!\"#$%&()*+,./:;<=>?@\\[\\]^_{|}~]+")) {
            super.replaceSelection(text);
        }
        if (getText().length() > 2 ) {
            setText(oldValue);
        }
    }
}

注意:我已阅读在JavaFX中创建数字TextField的推荐方法是什么?这个帖子,这个解决方案对我不起作用。输入号码后才会触发。意思是有人可以在框中输入字母文本,并且直到他们将焦点从文本字段移开为止。同样,他们可以输入比允许的数字大的数字,但是验证不是在每次按键时进行,而是在焦点移动(“更改”事件)之后进行。


问题答案:

最终解决方案。禁止使用字母和特殊字符,并限制字符数。

import javafx.scene.control.TextField;

public class AttributeTextField extends TextField{

    public AttributeTextField() {
        setMinWidth(25);
        setMaxWidth(25);
    }

    public void replaceText(int start, int end, String text) {
        String oldValue = getText();
        if (!text.matches("[A-Za-z]") && !text.matches("[\\\\!\"#$%&()*+,./:;<=>?@\\[\\]^_{|}~]+")) {
            super.replaceText(start, end, text);
        }
        if (getText().length() > 2 ) {
            setText(oldValue);
        }
    }

    public void replaceSelection(String text) {
        String oldValue = getText();
        if (!text.matches("[A-Za-z]") && !text.matches("[\\\\!\"#$%&()*+,./:;<=>?@\\[\\]^_{|}~]+")) {
            super.replaceSelection(text);
        }
        if (getText().length() > 2 ) {
            setText(oldValue);
        }
    }
}


 类似资料:
  • 我想控制Javafx TextField中的输入,以便只允许数字输入,并且如果超过了最大字符数,则不会对TextBox进行任何更改。 编辑:根据注释中的建议,我使用了JavaFX项目负责人建议的方法。阻止信件被输入很有效。我只需要它也过滤特殊字符。我尝试将筛选器更改为(text.matchs([0-9]“),但这不允许输入退格符。

  • 问题内容: 我刚刚开始弄乱JLine来解析控制台模式下的字符输入。看来运作良好,但我想知道: JLine中是否有非阻塞方式来查找字符是否可用?(例如,在Windows中。) 我想我总是可以将键盘输入包装在其自己的线程中,该线程随后将键盘字符提供给主线程一个线程安全的队列,但这似乎是不必要的。 编辑 :这是逐字符解析。我不会使用GUI。在控制台模式下,Java中通常的InputStream I /

  • 本文向大家介绍python监控键盘输入实例代码,包括了python监控键盘输入实例代码的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是python监控键盘输入的相关代码,用到了os,sys,time等,具体实现代码如下: 结果: 总结 以上就是本文关于python监控键盘输入实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢

  • 8.3.1 键盘输入的中断功能 键盘输入是绝大多数程序的主要输入方式,学习和掌握有关键盘输入中断的使用方法对编写交互式程序是非常重要的,也能更进一步理解计算机是如何接受键盘输入的。 1、键盘缓冲区 键盘缓冲区是一个先进先出的环形队列,其所占内存区域如下: KBHead DW ? ;其内存地址为0000:041AH,缓冲区头指针 KBTail DW ? ;其内存地址为0000:041CH,缓冲区尾指

  • 本文向大家介绍jQuery 监控键盘一段时间没输入,包括了jQuery 监控键盘一段时间没输入的使用技巧和注意事项,需要的朋友参考一下 监控一段时间没输入可用于简单的输入完成 上次实现了一个模拟输入完成则发送请求到后台获取数据的并显示到前台的问题,其中核心的判断标准是输入完成的定义。 即:用户怎么算输入完成。 我使用的标准是,当一个文本框中,里面的内容1秒钟无变化,则表示用户1秒钟内无输入,说明用

  • 有谁能给我一些建议或链接的所有控制的Android Studio键盘快捷键?