【问题标题】:Setting enterable characters in JTextField在 JTextField 中设置可输入字符
【发布时间】:2013-08-17 17:44:30
【问题描述】:

有什么方法可以设置哪些键将字符放入 JTextField 中?

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

【问题讨论】:

标签: java swing jtextfield documentlistener documentfilter


【解决方案1】:

通过在您的 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);
     }
 }

}

阅读更多:http://docs.oracle.com/javase/7/docs/api/javax/swing/JTextField.html

【讨论】:

  • @user2097804,这可能有效,但不再是推荐的方法。 API 中的示例代码很旧。 Swing 的新版本不支持更好的方法。查看可以使用格式化文本字段或 DocumentFilter 的 cmets。不要使用 KeyListener。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 2012-05-25
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
相关资源
最近更新 更多