gpt4 book ai didi

java - 输入文本只接受数字

转载 作者:行者123 更新时间:2023-11-29 03:24:06 25 4
gpt4 key购买 nike

我设计了一个带有一些 JTextFields 的小 swing GUI,但它有一个 validateVariables 方法,该方法必须验证界面内的所有字段,有一个名为 (IP) 的 JTextField 必须只接受 int 变量,我该如何设置它就这样?

P.S JTextfield 是使用 palete 工具在 netbeans 中创建的。

最佳答案

这是 JTextField 的 javadoc http://docs.oracle.com/javase/7/docs/api/javax/swing/JTextField.html

有一个例子

public class UpperCaseField extends JTextField {

public UpperCaseField(int cols) {
super(cols);
}

protected Document createDefaultModel() {
return new UpperCaseDocument();
}

static class UpperCaseDocument extends PlainDocument {

public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {

if (str == null) {
return;
}
char[] upper = str.toCharArray();
for (int i = 0; i < upper.length; i++) {
upper[i] = Character.toUpperCase(upper[i]);
}
super.insertString(offs, new String(upper), a);
}
}
}

此示例将所有用户输入更改为大写。只要修改insertString方法,去掉所有非数字字符,你可以让你的文本字段只接受数字。

例子:

public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
super.insertString(offs, str.replaceAll("[^0-9]", ""), a);
}

---- 编辑----

正如@MadProgrammer 所说,DocumentFilter 是另一种方式,例如:

Document document = someJTextField.getDocument();
if (document instanceof AbstractDocument) {
((AbstractDocument) doc).setDocumentFilter(new DocumentFilter() {
public void insertString(DocumentFilter.FilterBypass fb, int offset,
String str, AttributeSet a) throws BadLocationException {
fb.insertString(offset, str.replaceAll("[^0-9]", ""), a);
}
});
}

关于java - 输入文本只接受数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21996430/

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