Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JTextField中设置可输入字符_Java_Swing_Jtextfield_Documentlistener_Documentfilter - Fatal编程技术网

Java 在JTextField中设置可输入字符

Java 在JTextField中设置可输入字符,java,swing,jtextfield,documentlistener,documentfilter,Java,Swing,Jtextfield,Documentlistener,Documentfilter,有没有办法设置哪些键将字符放入JTextField 例如,如果我只想输入数字,当按下字母键时,该字母将不会添加到JTextField中的现有文本中。通过在JTextField中设置只在其中插入数字值的自定义文档 如Oracle文档中关于JTextField的说明所示: public class UpperCaseField extends JTextField { public UpperCaseField(int cols) { super(cols); } protect

有没有办法设置哪些键将字符放入JTextField


例如,如果我只想输入数字,当按下字母键时,该字母将不会添加到JTextField中的现有文本中。

通过在JTextField中设置只在其中插入数字值的自定义文档

如Oracle文档中关于JTextField的说明所示:

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);
     }
 }
公共类UpperCaseField扩展了JTextField{
公共大写字段(整数列){
超级(cols);
}
受保护的文档createDefaultModel(){
返回新的大写文档();
}
静态类UpperCaseDocument扩展了PlainDocument{
公共void insertString(int offs、String str、AttributeSet a)
抛出BadLocationException{
如果(str==null){
返回;
}
char[]upper=str.toCharArray();
对于(int i=0;i
}


阅读更多信息:

您可以使用KeyAdapter并使用您不喜欢的密钥。请查看此答案,关于@user2097804,这可能有效,但不再是推荐的方法。API中的示例代码很旧。Swing的新版本不支持更好的方法。查看注释,您可以使用格式化文本字段或DocumentFilter。不要使用KeyListener。