怎么样在java中设置jTextField可输入的字符数
3个回答
展开全部
//引用方法:
//JtextField jtf = new JTextFiel()
//jtf.setDocument(new ClsNumberDocument(5));
import javax.swing.text.PlainDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import java.awt.Toolkit;
/**
* <p>Title: 限制输入为数字</p>
* @author Wancar
* @version 0.5
* 日期 2002-03-21
* @copyright (c) 2000-2001.
*
* @description
* 限制输入为数字的文本类
*
* 并行策略描述(可选)
* 修改历史:
* 无
* 修改描述:无
*
* 内部类清单:
* 无
*/
/**
* 限制输入为数字的文本类
*/
public class ClsNumberDocument extends PlainDocument {
/**
*
*/
private static final long serialVersionUID = 1L;
private boolean isCanBeNegative = false; // 可以为负数
private final static int STRING_MAX_LEN = 255; // 最大长度
private int len = STRING_MAX_LEN; // 当前可接受的最大长度
/**
* 构造方法
*/
public ClsNumberDocument() {
}
/**
* 构造方法
*
* @param len
* 限制的长度
*/
public ClsNumberDocument(int len) {
this.len = len;
}
/**
* 可以为付数并限制长度
*
* @param isCanBeNegative
* 是否可以为负数
* @param len
* 限制的最大长度
*/
public ClsNumberDocument(boolean isCanBeNegative, int len) {
this.isCanBeNegative = isCanBeNegative;
this.len = len;
}
// 变量falg的作用是,通过传入的数是正数还是负数来决定数字的位数
// 以便做到指定数字位数时,只要考虑数字的位数,而无需考虑正负号
// 所占用的位数。
private boolean falg = false;
/**
* 实现的插入方法
*
* @param offset
* 偏移
* @param s
* 要接受的字符串,在拷贝粘贴时会有多个字符
* @param attributeSet
* @throws BadLocationException
*/
public void insertString(int offset, String s, AttributeSet attributeSet)
throws
BadLocationException {
try {
if (isAllNumber(s)) {
final int length = this.getLength();
if (s.charAt(0) == '-') {
if (this.isCanBeNegative) {
if (length == 0) {
this.len = falg ? len : len + 1;
falg = true;
super.insertString(offset, s, attributeSet);
}
}
} else {
if (length == 0) {
this.len = falg ? len - 1 : len;
falg = false;
}
if (length < len) {
String src = this.getText(0, length);
Double.parseDouble(src.substring(0, offset) + s
+ src.substring
(offset, src.length()));
super.insertString(offset, s, attributeSet);
}
}
}
} catch (Exception ex) {
Toolkit.getDefaultToolkit().beep();
}
}
/**
* 判断字符串是否全是数字
*
* @param s
* @return
*/
private boolean isAllNumber(String s) {
boolean ret = true;
if (s.length() > 0) {
char[] buf = s.toCharArray();
for (int i = 0; i < buf.length; i++) {
char c = buf[i];
if (c < '0' || c > '9') {
if (c != '.' && c != '-') {
ret = false;
break;
}
}
}
} else {
ret = false;
}
return ret;
}
}
展开全部
这个JAVA API没有提供这个实现啊
只能自己写了
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Test extends JFrame implements KeyListener {
JTextField tf = new JTextField(20);
int limit = 10;
public Test() {
JPanel jp = new JPanel();
tf.addKeyListener(this);
jp.add(tf);
getContentPane().add(jp);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(new Dimension(400, 300));
setVisible(true);
}
public void keyTyped(KeyEvent e) {
if (tf.getText().length() >= limit) {
getToolkit().beep();
e.consume();
System.out.println("Value cannot greater than 10");
JOptionPane.showMessageDialog(null, "Value cannot greater than 10");
}
}
public void keyReleased(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
}
public static void main(String[] a) {
new Test();
}
}
只能自己写了
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Test extends JFrame implements KeyListener {
JTextField tf = new JTextField(20);
int limit = 10;
public Test() {
JPanel jp = new JPanel();
tf.addKeyListener(this);
jp.add(tf);
getContentPane().add(jp);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(new Dimension(400, 300));
setVisible(true);
}
public void keyTyped(KeyEvent e) {
if (tf.getText().length() >= limit) {
getToolkit().beep();
e.consume();
System.out.println("Value cannot greater than 10");
JOptionPane.showMessageDialog(null, "Value cannot greater than 10");
}
}
public void keyReleased(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
}
public static void main(String[] a) {
new Test();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只能自己控制了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询