2013-08-15 4 views
0

Есть ли способ установить, какие клавиши помещают символы в JTextField?Установка вводимых символов в JTextField

Например, если мне нужны только числа, которые нужно ввести, когда нажата клавиша букв, эта буква не будет добавлена ​​к существующему тексту в JTextField.

+0

да несколько способов ... – mKorbel

+0

[Использование форматированного текста поля] (HTTP: //docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html) – mre

+0

Вы можете использовать KeyAdapter и использовать ключи, которые вам не нравятся. – MightyPork

ответ

1

Установив собственный документ в свой JTextField, который будет вставлять в него только числовые значения.

Как показано в Oracle documententation о 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

+3

@ user2097804, это может сработать, но оно больше не рекомендуется подход. Пример кода в API старый. Новые версии Swing не поддерживают лучших подходов. См. Комментарии, которые можно использовать либо форматированное текстовое поле, либо DocumentFilter. НЕ используйте KeyListener. – camickr

Смежные вопросы