我想获得大写字母而不按大写锁定和Shift键

时间:2011-12-22 07:37:51

标签: java swing jtextfield

如果我在jtextfield中给出字母值而不使用大写锁定 shift 键,则应该给出大写字母值。我不知道如何克服这个问题。给我一个代码来解决这个问题。

4 个答案:

答案 0 :(得分:6)

  

通过扩展模型并更改提供的默认模型,可以轻松创建自定义字段。例如,以下代码段将创建仅包含大写字符的字段。即使从剪贴板粘贴文本或通过程序更改更改文本,它也会起作用。

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

礼貌:JTextField

答案 1 :(得分:3)

定义DocumentFilter并分配给JTextFiled的{​​{1}}或仅扩展Document中使用的PlainDocument并覆盖JTextField方法。将String参数转换为uppser case并传递给insertString()

答案 2 :(得分:0)

您可以处理文本字段的on key up事件并将文本重置为toUpperCase。

textField.setText(textField.getText().toUpperCase());

这里显示了更好的方法

http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/JTextField.html

答案 3 :(得分:-1)

尝试

jtextfield.addKeyListener(new KeyAdapter(){
   keyReleased(KeyEvent e) {
      jtextfield.setText(jtextfield.getText().toUpperCase());
   }

});