사용자가 텍스트 필드에 입력 할 수있는 최대 문자 길이를 제한하려하지만 작동하지 않는 것 같습니다.JTextField에서 입력 길이 제한이 작동하지 않습니다.
text2 = new JTextField("Enter text here",8);
내가 잘못하고있는 중이 있나요 : 여기
코드인가? 한도를 올바르게 설정하려면 어떻게해야합니까?사용자가 텍스트 필드에 입력 할 수있는 최대 문자 길이를 제한하려하지만 작동하지 않는 것 같습니다.JTextField에서 입력 길이 제한이 작동하지 않습니다.
text2 = new JTextField("Enter text here",8);
내가 잘못하고있는 중이 있나요 : 여기
코드인가? 한도를 올바르게 설정하려면 어떻게해야합니까?생성자
new JTextField("Enter text here",8);
8 볼 열 수를 설정하지만, 더 진입을 제한하지 않습니다.
DocumentFilter을 사용하여 입력 길이를 제한 할 수 있습니다.
현재 코드가 최대 길이를 설정하지 않고 표시된 열의 수를 정의하고 있습니다.
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));
는 단순히 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");
}
}
}
이것이 도움이 될 것입니다. 방금 keyTyped
유형의 KeyListener
을 JTextField
에 추가했습니다. 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();
}
}
});
현재이 작업을 수행하는 방법에 대한 좋은 예를 찾을 수 있습니다 (http://www.java2s.com/Tutorial/Java/0240__Swing/LimitJTextFieldinputtoamaximumlength.htm). – Designpattern