다른 사람들이 만든 맞춤형 PlainDocument를 필요에 따라 만들려고했으나 PlainDocument의 메커니즘을 모르기 때문에 실패했으며 작동하지 않았습니다. 제 텍스트 필드에 2 글자 만 허용 할 수있는 무언가가 필요합니다. 따라서 두 번만 나타나는 a-zA-Z도 있습니다. 나는 이것을 먼저 시도했다.내 DocumentFilter에 무엇이 잘못되었는지 알아낼 수 없습니다.
public class LetterDocument extends PlainDocument {
private String text = "";
@Override
public void insertString(int offset, String txt, AttributeSet a) {
try {
text = getText(0, getLength());
if ((text + txt).matches("^[a-zA-Z]{2}$")) {
super.insertString(offset, txt, a);
}
} catch (Exception ex) {
Logger.getLogger(LetterDocument.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
이것은 아무 것도 타이핑하지 못하게한다. 내가 잘못 무엇 아무 생각이
public class LetterDocument extends PlainDocument {
private int limit;
private String text = "";
LetterDocument(int limit) {
super();
this.limit = limit;
}
@Override
public void insertString(int offset, String txt, AttributeSet a)
throws BadLocationException {
if (txt == null)
return;
try {
text = getText(0, getLength());
if (((text + txt).matches("[a-zA-Z]"))
&& (txt.length()) <= limit) {
super.insertString(offset, txt, a);
}
} catch (Exception ex) {
Logger.getLogger(LetterDocument.class.getName()).log(Level.SEVERE,
null, ex);
}
}
}
: 그때 내가 문자를 제한이 개 다른 스레드에서 입력 할 문자 만시키는 그들 중 하나, 다른에서 함께 퍼팅 시도하는이를 시도했다.
2 차원 마스크 (글자 수 제한 및 마스크)가 필요하므로 필자의 phoneNumber 및 zip code textfield에 마스크 포맷터를 사용하고 문자와 숫자로만 제한하기 때문에 주소, 도시, 이름에 DocumentFilter를 사용했습니다. 너무 걱정하지 않아요. 고맙습니다! – Abdul
또한 오류가 발생하지는 않지만 JTextField와 JFormattedTextfield에 대한 모든 점이 유연성과 예외가있는 메서드와 같은 것입니까? 내가 가서 수정해야 할 경우에 대비해서 부탁합니다. – Abdul