2012-09-06 4 views
1

나는 자바 스윙을 배우고있다. 서로 다른 수심을 선택할 수있는 편집 가능한 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

[JTextField] (심지어 그 때)와 함께 [DocumentListener] (http://docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html)를 사용하는 것이 아니라면 확실히 좋은 방법이 아닙니다. JFormattedTextField'는 IMO를위한 것입니다. –

관련 문제