当前位置: 首页 > 知识库问答 >
问题:

控制键盘输入到javafx文本字段

高晋
2023-03-14

我想控制Javafx TextField中的输入,以便只允许数字输入,并且如果超过了最大字符数,则不会对TextBox进行任何更改。

编辑:根据注释中的建议,我使用了JavaFX项目负责人建议的方法。阻止信件被输入很有效。我只需要它也过滤特殊字符。我尝试将筛选器更改为(text.matchs([0-9]“),但这不允许输入退格符。

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);
        }
    }
}

共有1个答案

公孙新觉
2023-03-14

尝试此解决方案在控制器中添加此函数,您必须在文本字段的按下键的操作上添加它。

@FXML
void verifnum(KeyEvent event) {

    txt.textProperty().addListener(new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable, String oldValue,
                String newValue) {
            if (!newValue.matches("\\d*")) {
                txt.setText(newValue.replaceAll("[^\\d]", ""));
            }
        }
    });
}
 类似资料:
  • 问题内容: 我想控制Javafx TextField中的输入,以便只允许数字输入,这样,如果超出了最大字符数,则不会对文本框进行任何更改。 编辑:根据评论中的建议,我使用了JavaFX项目负责人建议的方法。阻止输入字母非常有用。我只需要它也可以过滤特殊字符。我尝试将过滤器更改为(text.matchs(“ [0-9]”),但不允许输入退格键。 edit2:找出一个特殊字符和长度的过滤器。这是我的最

  • 所以在过去的一天半时间里,我一直被这个问题所困扰。我试图在我的LWJGL游戏中实现一个2D可写的文本框。文本框的呈现不是问题,并且工作得完美无缺。 然而,我的投入并不是很好。问题是我不知道如何检测单键按下,所以它没有在输入字符串中添加“a”,而是添加了“aaaaaaaaaaaaaaaaaaa”,因为游戏时钟很快。 这是我的代码: 谢了!

  • 问题内容: 我正在使用JavaFX和Scene Builder,并且有一个带有文本字段的表单。这些文本字段中的三个从字符串解析为双精度。 我希望它们是学校成绩,因此只能将其设置为1.0到6.0之间。不应允许用户写“ 2.34.4”之类的内容,但可以写“ 5.5”或“ 2.9”之类的内容。 验证已解析字段: 如何测试用户输入的值是否正确? 我已经在Stackoverflow和Google上进行了搜索

  • 我使用的是javafx文本字段。我需要输入与格式##########匹配的数字和小数### 小数不可编辑,数字可以是任意数字;不允许其他输入。并非所有数字占位符都需要填写,例如,它可能是1.2或2.22.1,甚至是1.222.222.0 我尝试使用模式匹配与正则表达式来验证更改的文本,但仅此而已;它验证输入,它不会使十进制字段成为不可编辑的字段,并且工具提示不是一个选项。我不确定还能尝试什么。 我

  • 有什么方法可以调整JavaFX虚拟键盘子窗口的大小吗? 我指的是虚拟键盘属于的阶段作为一个子窗口,因为它是如何在风景视图中被标记的。 我正在开发一个应用程序,专门使用虚拟键盘在Surface3平板上进行文本输入。由于分辨率(2160x1440),键盘的按钮太短,无法可靠地按在Surface的屏幕上,如图所示,将其调整为1920的宽度:http://i.imgur.com/kp65dlm.png:h

  • 我希望javafx标签自动更新为正在输入到文本字段中的内容,目前我只有在单击回车键时才更改它。我正在使用秋千和javafx的混合。 这可能吗? 谢谢