2014-09-03 7 views
0

내 입력을 내 JFormattedTextField으로 제한하고 MaskFormatter을 사용하는 설정이 있습니다.MaskFormatter는 사용자가 제공하는 크기 또는 크기 만 사용할 수 있습니까?

그러나 내가 지정한 문자 수 (이 경우 5)를 넣어야합니다. 크기 입력을 허용하고 입력을 소문자로 제한 할 수있는 방법이 있습니까? 또는 다른 목적을 위해 다른 수업을 사용해야합니까?

아래에 현재 나와있는 것들이 있습니다.

제 목표는 두 개의 텍스트 입력을 가져 와서 텍스트 입력을 비교하는 것입니다.

//This formatter allows for up to a 10 character word. 
    //No spaces allowed. 
    MaskFormatter leftMask = null; 
    try { 
     leftMask = new MaskFormatter("LLLLL"); 
     leftMask.setInvalidCharacters("1234567890 "); 
     leftMask.setOverwriteMode(false); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    MaskFormatter rightMask = null; 
    try { 
     rightMask = new MaskFormatter("LLLLL"); 
     rightMask.setInvalidCharacters("1234567890 "); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    //Initialize components 
    leftTextField = new JFormattedTextField(leftMask); 
    rightTextField = new JFormattedTextField(rightMask); 
    submitButton = new JButton("Submit"); 

    submitButton.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e) 
     { 
      InputReader reader = new InputReader(); 
      result.setText("These two strings are:"); 
      if(reader.readInput(leftTextField.getText(), rightTextField.getText())){ 
       result.append(" a match"); 
      } 
      else{ 
       result.append(" not a match"); 
      } 
     } 
    }); 

답변

2

내가 제대로 질문을 이해한다면, 당신이 뭔가 같이했던 방법 ... 기본적으로

public static String generateFormat(char with, int count) { 
    return String.format("%" + count + "s", "").replaceAll(" ", Character.toString(with)); 
} 

을 쓸 수는, 이것은 당신이 할 수 무엇을 생성 값 가득 String입니다 자, 뭔가 등의 count-with ... 지금

leftMask = new MaskFormatter(generateFormat('L', 5)); 

, 이것은 완벽한 솔루션 및 더 나은 SOLU은 아니다 기는

더 자세한 사항에 대한 Implementing a Document Filter보고 DocumentFilter Examples이 ... 실시간으로 당신에게 사용자가 입력 할 수 있습니다 얼마나 무엇을 완벽하게 제어 할 줄 것이다 DocumentFilter를 사용하는 수 있습니다.

+0

이 방법이 효과가 있지만 MaskFormatter는 여전히 입력이 모두 5 개 (또는 사용자가 선택한 숫자)가되어야합니다. 그렇지 않은 경우 입력을받지 않습니다. 내 일은 최대 문자 수에 상관없이 입력을 받아 들여야한다는 것입니다. 나는 또한 당신이 제공 한 링크를 보게 될 것이다. 응답 주셔서 감사합니다! – David

+0

그 이유는 포맷 된 필드를 덤프하고 JTextField를 사용하고 DocumentFilter – MadProgrammer