首先继承一个PlainDocument,如下,重载insertString方法。
//说明如何限制只允许录入整数
class IntegerDocument extends PlainDocument{
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
try{
Integer.parseInt(s);
}catch(Exception e) {
Toolkit.getDefaultToolkit.beep();
return;
}
super.insertString(offs,s,a);
}
然后将这个类作为你的文本组件的数据模型,
JTextField tf = new JTextField();
tf.setDocument(new IntegerDocument);
如此这个tf就只允许录入数值了。来源:java2图形设计 page883
//说明如何限制只允许录入整数
class IntegerDocument extends PlainDocument{
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
try{
Integer.parseInt(s);
}catch(Exception e) {
Toolkit.getDefaultToolkit.beep();
return;
}
super.insertString(offs,s,a);
}
然后将这个类作为你的文本组件的数据模型,
JTextField tf = new JTextField();
tf.setDocument(new IntegerDocument);
如此这个tf就只允许录入数值了。来源:java2图形设计 page883
解决方案 »
- 向高手请教!关于Java中String的一些疑问
- 怎样把Applet的窗体设置在界面中央?急!!!!!请高手赐教!
- 帮帮看看这两个程序
- 新手请教:java中String转换成int为什么会出错.
- 高手进入---------判断鼠标点击坐标是否在一条线段上
- JAVA方法的形参类型有些怎么是类名称
- 紧急求助:哪位大哥帮我看看我的程序他做在哪里?我的工具是jdk
- socket的问题?怎样判断socket发出的字节已经完全读取完毕?
- jbuilder6支持tomcat4.0.1了,反而不支持weblogic6.1sp1了。
- 【100分】Linux下面,JBOSS的项目,总是无法利用getProperty(),获取属性值!救命啊!
- JAVA编程一般用什么工具??
- java多线程问题?
30~39,则为半角的数字。
在ASCII中 数字的ASCII值为48—57。
30h~39h《==》48d~57d,不过我原先理解错了你的意思。全角的数字其实也是字符,这勿庸置疑,只要能确定它们对应
的二进制数值,那么问题也就迎刃而解了。
全角的数字字符占两个字节,第一个字节必为-93d,第二个字节
必定在-80d~-71d之间(分别对应0~9),了解了这个,就
可以编出来了,方法综合用到了simonhappy() 和louisqiang(tenwin)
提到的方法。下面是源代码,你编译运行试试,应该没有任何问题。//Runfrmae.java
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;class FilterDocument extends PlainDocument
{
byte[] bs=new byte[3];
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
{
bs=str.getBytes();
if(bs.length==2 && bs[0]==-93)//如果是中文字符并且第一个字节为-93
{
if(bs[1]>=-80 && bs[1]<=-71)
{
//如果第二个字节在-80~-71之间,那么刚刚输入的字符为全角的数字字符
//则忽略刚刚输入的字符
Toolkit.getDefaultToolkit().beep();
return;
}
}
super.insertString(offs,str,a);//否则就插入刚刚输入的字符
}
}
class TFrame extends JFrame
{
TFrame()
{
setTitle("测试--限制输入全角的数字");
setBounds(200,200,400,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea tf=new JTextArea();
tf.setDocument(new FilterDocument());
Container contentPane=getContentPane();
contentPane.add(tf);
}
}
public class Runframe
{
public static void main(String[] args)
{
int a=0;
TFrame frm=new TFrame();
frm.setVisible(true);
}
}