2012-09-06 7 views
1

Я изучаю java swing. Существует редактируемый JComboBox для выбора разных глубин воды и JTextField, чтобы принять мобильный номер. Мой вопрос заключается в том, как я могу ограничить пользователя вводить только цифры в этих двух полях, а также как ограничить максимальное количество входных символов, например, не более 10 для мобильного номера? Доступны ли методы для этих требований или мне нужно их определить? Заранее благодарим за помощь.Как ограничить типы ввода

+4

Вы можете использовать 'JSpinner' с числовой моделью для глубины. –

ответ

4

Используйте JFormattedTextField что-то вроде:

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 

     @Override 
     public void run() { 
      JFrame frame = new JFrame("JFormattedTextField Example"); 
      MaskFormatter fmt = null; 

      // A phone number 10 digits 
      try { 
       fmt = new MaskFormatter("(###)-###-####");//brackets() are optional just there for my pref 
       fmt.setPlaceholderCharacter('*');//set place holder for the empty digits of the number 

      } catch (java.text.ParseException e) { 
      } 

      JFormattedTextField tft1 = new JFormattedTextField(fmt); 

      frame.add(tft1); 

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setLocationRelativeTo(null); 
      frame.pack(); 
      frame.setVisible(true); 
     } 
    }); 
} 

Это автоматически имеет свойства, которые вы хотите будет принимать только цифры в заданном формате Посмотрите на документы тоже для получения дополнительной информации: JFormattedTextField

+1

Благодарю вас за помощь. –

0

Как насчет этого, чтобы запретить пользователю вводить символы, отличные от цифр, в текстовом поле телефона

TF1.addKeyListener(new KeyListener() { 

      @Override 
      public void keyTyped(KeyEvent arg0) { 
       // TODO Auto-generated method stub 
       char k=arg0.getKeyChar(); 
       if (!(k>='0' && k<='9')) 
        arg0.consume(); 
      } 

      @Override 
      public void keyReleased(KeyEvent arg0) { 
       // TODO Auto-generated method stub    
      } 

      @Override 
      public void keyPressed(KeyEvent arg0) { 
       // TODO Auto-generated method stub    
      } 
     }); 
+1

определенно не хороший метод, если что-то скорее использует [DocumentListener] (http://docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html) с помощью 'JTextField' (даже тогда), это то, что' JFormattedTextField - для ИМО –

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