JAVA代码中怎么限制输入的字符长度

例如,做一个帐号密码输入程序,帐号字符限制长度为12,密码字符长度限制为6,求解,如果需要调用API,请一并把名字带上

第1个回答  2016-11-07
使用DocumentFilter

import java.awt.EventQueue;
import java.awt.GridBagLayout;
import java.awt.Toolkit;
import javax.print.attribute.AttributeSet;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.text.AbstractDocument;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
import javax.swing.text.DocumentFilter.FilterBypass;

public class FilterTest {

public static void main(String[] args) {
new FilterTest();
}

public FilterTest() {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}

JTextField field = new JTextField(10);
((AbstractDocument)field.getDocument()).setDocumentFilter(new SizeFilter(5));

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());
frame.add(field);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

});
}

public class SizeFilter extends DocumentFilter {

private int maxCharacters;

public SizeFilter(int maxChars) {
maxCharacters = maxChars;
}

public void insertString(FilterBypass fb, int offs, String str, AttributeSet a)
throws BadLocationException {

if ((fb.getDocument().getLength() + str.length()) <= maxCharacters) {
super.insertString(fb, offs, str, a);
} else {
Toolkit.getDefaultToolkit().beep();
}
}

public void replace(FilterBypass fb, int offs, int length, String str, AttributeSet a)
throws BadLocationException {

if ((fb.getDocument().getLength() + str.length()
- length) <= maxCharacters) {
super.replace(fb, offs, length, str, a);
} else {
Toolkit.getDefaultToolkit().beep();
}
}
}

}追问

作为一个JAVA初学者,表示这串代码压力很大
(#゚Д゚) 问个小问题,我是通过int转string length的方式来完成字符长度限制的,其中我加入try语句用来报错返回,但是编译通过了,但是catch语句没有被触发该怎么办,报错码是InputMismatchException

本回答被网友采纳
相似回答