2012-10-25 2 views
5

사용자가 텍스트 필드에 입력 할 수있는 최대 문자 길이를 제한하려하지만 작동하지 않는 것 같습니다.JTextField에서 입력 길이 제한이 작동하지 않습니다.

text2 = new JTextField("Enter text here",8); 

내가 잘못하고있는 중이 있나요 : 여기

코드인가? 한도를 올바르게 설정하려면 어떻게해야합니까?

답변

9

생성자

new JTextField("Enter text here",8); 

8 볼 열 수를 설정하지만, 더 진입을 제한하지 않습니다.

DocumentFilter을 사용하여 입력 길이를 제한 할 수 있습니다.

+1

현재이 작업을 수행하는 방법에 대한 좋은 예를 찾을 수 있습니다 (http://www.java2s.com/Tutorial/Java/0240__Swing/LimitJTextFieldinputtoamaximumlength.htm). – Designpattern

10

현재 코드가 최대 길이를 설정하지 않고 표시된 열의 수를 정의하고 있습니다.

public final class LengthRestrictedDocument extends PlainDocument { 

    private final int limit; 

    public LengthRestrictedDocument(int limit) { 
    this.limit = limit; 
    } 

    @Override 
    public void insertString(int offs, String str, AttributeSet a) 
     throws BadLocationException { 
    if (str == null) 
     return; 

    if ((getLength() + str.length()) <= limit) { 
     super.insertString(offs, str, a); 
    } 
    } 
} 

다음이를 사용하여 텍스트 필드를 설정 :

는 최대 길이 제한을 깰 추가를 허용하지 않습니다 텍스트 필드에 대한 사용자 정의 Document을 설정할 수있는 데이터의 최대 길이를 제한하려면 문서 :

text2.setDocument(new LengthRestrictedDocument(8)); 
0

는 단순히 JTextField를 클래스를 확장하고 생성자에서의 keyReleased 이벤트를 무시하고 길이를 확인하는 새로운 방법에 지점 :

package gui; 

import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 

import javax.swing.JTextField; 

public class RecordClassTextField extends JTextField { 

    public RecordClassTextField() { 
     this.addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyReleased(KeyEvent e) { 
       cleanText(); 
      } 
     }); 
    } 

    private void cleanText() 
    { 
     if(this.getText().length() > 17){ 
      System.out.println("Over 17"); 
     } 
    } 
} 
0

이것이 도움이 될 것입니다. 방금 keyTyped 유형의 KeyListenerJTextField에 추가했습니다. KeyListener은 사용자가 if 문에 정의 된 한도를 초과하여 문자를 입력 할 때 작동합니다.

text2 = new JTextField("Enter text here",8); 
text2.addKeyListener(new KeyAdapter() { 
     public void keyTyped(KeyEvent e) { 
      if (text2.getText().length() == 8) { 
       e.consume(); 
      } 
     } 
    }); 
관련 문제