java从键盘输入代码长度_JAVA代码中怎么限制输入的字符长度

匿名用户

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


版权声明:本文为weixin_34245171原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。