내 jtextfield가 0과 아래 코드 예제에 지정된 MAX
값 사이의 숫자 값만 허용하도록합니다.JTextfied에서 0과 8 사이의 숫자 값만 받아들이는 방법?
MAX
변수가 아래와 같이 설정되어 있다고합시다. 그럼 난 그저 0과 8 사이의 숫자 값을 입력 할 수 있기를 원합니다. 아래 코드 예제에서는 88, 77, 66 등을 입력 할 수 있습니다. 나는 그것이 0과 MAX
사이의 값만 허용하도록 어떻게 만들 수 있는지 전혀 모른다.
import javax.swing.*;
import javax.swing.text.*;
public class DocumentDemo extends JFrame {
public static void main(String[] args) {
new DocumentDemo();
}
final int MAX = 8;
public DocumentDemo() {
this.setVisible(true);
JTextField textField = new JTextField();
((AbstractDocument)textField.getDocument()).setDocumentFilter(
new DocumentFilter() {
@Override
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
int len = text.length();
boolean isValidValue = true;
for(int i = 0; i < len; i++) {
if(!Character.isDigit(text.charAt(i))){
isValidValue = false;
}
}
if(isValidValue && Integer.parseInt(text) > MAX) {
isValidValue = false;
}
if(isValidValue && fb.getDocument().getText(0, fb.getDocument().getLength()).length() > String.valueOf(MAX).length()) {
isValidValue = false;
}
if(isValidValue) {
super.replace(fb, offset, length, text, attrs);
}
}
}
);
textField.setColumns(5);
this.add(textField);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
}
}
유효한 값이 너무 적기 때문에 JSpinner를 사용할 수 있습니다. –
위의 값은 예제입니다. 12345 일 수도 있습니다. 그러나 나는 위의 예에서 낮은 가치를 선택했다. :-) – Rox
''나는 그것을 만들 수있는 단서가 없으므로 0에서 MAX 사이의 값만 받아 들일 수 있습니다. "- 문서 필터 **가 ** 작동합니다. 위의 진술은 우리가 갇혀있는 곳을 파악하는 데 도움이되지 않습니다. 성명서에 구체적으로 기재하십시오. 내 이름과 DocumentFilter에서이 사이트를 검색하면이 사람들을 만드는 방법에 대한 예제가 있습니다. –