gpt4 book ai didi

Java:如何允许在 JTextField 中按下退格键

转载 作者:行者123 更新时间:2023-12-02 01:14:51 25 4
gpt4 key购买 nike

我制作了一个 JTextField 来限制输入的字符,除非它是数字、字母“e”或逗号。但现在我意识到它限制了按退格键。我怎样才能改变它?我将添加代码,在其中检查按下的键,如下

for (JTextField tf : listOfFields)
{
String value = tf.getText();
int n = value.length();
if (ke.getKeyChar()>= '0' && ke.getKeyChar() <= '9' || ke.getKeyChar() == ','|| ke.getKeyChar() == 'e')
{
tf.setEditable(true);
}
else
{
tf.setEditable(false);
}
}}});

最佳答案

要让文本字段接受数字输入,您应该使用 JFormattedTextField :

JFormattedTextField field = new JFormattedTextField(
NumberFormat.getIntegerInstance());
field.setColumns(12);

要使其检查本地化数字格式(使用逗号的格式)和 java.lang 语法(如 1e5),您可以创建 NumberFormatter这两者兼而有之:

NumberFormatter formatter = new NumberFormatter() {
@Override
public Object stringToValue(String text)
throws ParseException {
try {
return Double.valueOf(text);
} catch (NumberFormatException ne) {
return super.stringToValue(text);
}
}
};
JFormattedTextField field = new JFormattedTextField(formatter);
field.setColumns(12);

可以使用 getValue 方法检索每个字段的值:

for (JFormattedTextField tf : listOfFields) {
Number value = (Number) tf.getValue();
// ...
}

限制用户键入的键并不是保证数字输入的正确方法。例如,您的代码将允许用户输入 123,4,45,678

有很多键可以进行编辑。 Home、End、Delete 和 Ctrl-A 只是其中的几个。您不应该尝试使用击键白名单来显式地容纳它们。让 JFormattedTextField 来完成验证输入的工作。

关于Java:如何允许在 JTextField 中按下退格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58838094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com