Я хочу получить заглавную букву без нажатия заглавных букв и клавиши Shift - PullRequest
0 голосов
/ 22 декабря 2011

Если я задаю значение алфавита в jtextfield без использования ключа caps Lock или клавиши shift , в нем должно быть прописное значение алфавита.Я не знаю, как преодолеть эту проблему.Дайте мне код, чтобы решить этот вопрос.

Ответы [ 4 ]

6 голосов
/ 22 декабря 2011

Пользовательские поля могут быть легко созданы путем расширения модели и изменения предоставленной модели по умолчанию. Например, следующий фрагмент кода создаст поле, содержащее только символы верхнего регистра. Он будет работать, даже если текст вставлен из буфера обмена или изменен с помощью программных изменений.

 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

3 голосов
/ 22 декабря 2011

Определите DocumentFilter и присвойте JTextFiled Document или просто расширьте PlainDocument, используемое в JTextField, и переопределите insertString() метод.преобразовать в случай Uppser параметр String и передать в super.insertString()

0 голосов
/ 22 декабря 2011

Попробуйте

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

});
0 голосов
/ 22 декабря 2011

Вы можете обрабатывать событие включения ключа для текстового поля и сбрасывать текст в toUpperCase.

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

Здесь показан лучший способ

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

...