获得其值时,然后加以限制。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.regex.*;
import java.awt.event.ActionListener;
import java.util.EventListener;
public class TestTextField extends JFrame implements ActionListener
{
JTextField jtf = null;
JButton jb = null;
public TestTextField()
{
jtf = new JTextField(12);
jb = new JButton("确定");
jb.addActionListener(this);
Container con = this.getContentPane();
con.add(jtf,new BorderLayout().CENTER);
con.add(jb,new BorderLayout().SOUTH);
this.setSize(400,400);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String s = jtf.getText();
String regex = "^\\d+$";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
boolean flage=m.find();
if(flage == false )
{
JOptionPane.showMessageDialog(null,"只能输入数字");
}
}
public static void main(String args[])
{
new TestTextField();
}
}
简单的给你实现了一下,通过正则表达式就可以做到。你看看吧。主要是红色代码处。
重新构造一个JTextField就可以做到限制长度和限制字符
package main;import javax.swing.*;
import javax.swing.text.*;
import java.awt.Toolkit;public class Test extends JPanel {
private JTextField numberField;
public Test() {
numberField = new JTextField(new NumberField(10),\"\",10); //创建一个以Document建造的长度为10,输入限制长度为10的文本框
add(numberField);
}
public static void main (String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(new Test());
f.pack();
f.setVisible(true);
}
private class NumberField extends PlainDocument {
private int maxLength = 0;
public NumberField(int maxLength) { //文本的最大长度
this.maxLength = maxLength;
}
public void insertString(int offset,String str,AttributeSet att)
throws BadLocationException {
char[] source = str.toCharArray(); //将输入的字符转换为char型数组
if(getLength() + str.length() > maxLength) {
Toolkit.getDefaultToolkit().beep(); //如果长度超过预设长度则发出\"哔\"的一声
return;
}
for(char c:source) { //将字符通过循环提取出来 需要5.0以上版本的JDK
if(Character.isDigit(c)) { //判断输入的字符是否为数字
super.insertString(offset,str,att); //是数字则插入文本框内显示
}
}
}
}
}