powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Защита от ввода ненужных символов в JTextField
5 сообщений из 5, страница 1 из 1
Защита от ввода ненужных символов в JTextField
    #34508973
Народ подскажите плиз как можно малой кровью реализовать защиту от ввода ненужных символов в JTextField.
...
Рейтинг: 0 / 0
Защита от ввода ненужных символов в JTextField
    #34509233
Дуремар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень просто - переопределить модель данных надо.
Наследуешься от javax.swing.text.PlainDocument, переопределяешь метод public void insertString(int offs, String str, AttributeSet a), в параметре str выкидываешь ненужные символы, если после этого в строке хоть что-то осталось, вызываешь super.insertString(...) с уже измененной строкой.
Модель устанавливаешь в JTextField методом setDocument или наследуешься от JTextField и переопределяешь метод createDefaultModel().
Работает безотказно....
...
Рейтинг: 0 / 0
Защита от ввода ненужных символов в JTextField
    #34513251
/**/
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот что-то подобное:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
 class  JTextFieldFilter  extends  PlainDocument{
   public   static   final  String LOWERCASE =
      "abcdefghijklmnopqrstuvwxyz";
   public   static   final  String UPPERCASE =
      "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   public   static   final  String ALPHA =
      LOWERCASE + UPPERCASE;
   public   static   final  String NUMERIC =
      "0123456789";

   public   static   final  String B_NUMERIC =
      "123456789";

   public   static   final  String  FLOAT  =
      NUMERIC + ".";
   public   static   final  String ALPHA_NUMERIC =
     ALPHA + NUMERIC;
   protected  String acceptedChars =  null ;
   protected   boolean  negativeAccepted = false;

   public  JTextFieldFilter() {
     this (ALPHA_NUMERIC);
  }
   public  JTextFieldFilter(String acceptedchars) {
    acceptedChars = acceptedchars;
  }

   public   void  setNegativeAccepted( boolean  negativeaccepted){
     if (acceptedChars.equals(NUMERIC) ||
      acceptedChars.equals( FLOAT ) ||
      acceptedChars.equals(ALPHA_NUMERIC)){
      negativeAccepted = negativeaccepted;
      acceptedChars += "-";
  }
  }
   public   void  insertString
      ( int  offset, String str, AttributeSet attr)
       throws  BadLocationException {
     if (str ==  null )  return ;
     if (acceptedChars.equals(UPPERCASE))
      str = str.toUpperCase();
       else   if  (acceptedChars.equals(LOWERCASE))
        str = str.toLowerCase();

     for  ( int  i= 0 ; i < str.length(); i++) {
       if (acceptedChars.indexOf(str.valueOf(str.charAt(i))) == - 1 )
           return ;
      }

         if (acceptedChars.equals( FLOAT ) ||
          (acceptedChars.equals( FLOAT  + "-") && negativeAccepted)) {
           if  (str.indexOf(".") != - 1 ) {
          if  (getText( 0 , getLength()).indexOf(".") != - 1 ) {
            return ;
         }
       }
       }
          if (negativeAccepted && str.indexOf("-") != - 1 ) {
        if  (str.indexOf("-") !=  0  || offset !=  0  ) {
          return ;
       }
     }
        super .insertString(offset, str, attr);
  }
}

далее:

Код: plaintext
jTextField1.setDocument( new  JTextFieldFilter(JTextFieldFilter.NUMERIC));
...
Рейтинг: 0 / 0
Защита от ввода ненужных символов в JTextField
    #34513359
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На заметку. Вместо констант-массивов лучше использовать методы наподобие вот этого:
http://java.sun.com/javase/6/docs/api/java/lang/Character.html#isUpperCase(char)
Помимо того, что приложение будет легче писать, так еще и лучше обеспечивается локализация (это такая вещь, про которую не известно, понадобится она или нет).
...
Рейтинг: 0 / 0
Защита от ввода ненужных символов в JTextField
    #34513387
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Защита от ввода ненужных символов в JTextField
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]