当前位置: 代码迷 >> Java相关 >> 找了半天没找到,给说下
  详细解决方案

找了半天没找到,给说下

热度:143   发布时间:2007-03-05 21:46:12.0
找了半天没找到,给说下
在单行输入框内怎么样只能输入0-9的数字,别的都丢弃!
搜索更多相关的解决方案: 怎么样  

----------------解决方案--------------------------------------------------------
import javax.swing.text.PlainDocument;
import javax.swing.text.BadLocationException;
import javax.swing.text.AttributeSet;
import javax.swing.JTextField;
import javax.swing.JFrame;
import java.awt.BorderLayout;

public class InsertNumberTest extends JFrame{
private JTextField jtfNumber;

public InsertNumberTest(){
setTitle("numberTextField");
jtfNumber=new JTextField();
jtfNumber.setDocument(new NumberDocument());
getContentPane().add(jtfNumber,BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(150,80);
setVisible(true);
}

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


class NumberDocument extends PlainDocument{
public void insertString(int off,String str,AttributeSet attr) throws BadLocationException{
if(str==null) return;
int c=0;
char[] chars=str.toCharArray();
for(int i=0;i<chars.length;i++){
if(Character.isDigit(chars[i])){
chars[c++]=chars[i];
}
}
super.insertString(off,new String(chars,0,c),attr);
}
}
----------------解决方案--------------------------------------------------------
谢了!
----------------解决方案--------------------------------------------------------
今天看了下API我发现这样可以做了,不过还是谢谢楼上的回复
public void jTextField1_keyTyped(KeyEvent e) {
if (e.getKeyChar()<'0' || e.getKeyChar()>'9') {
e.setKeyChar('\0');
return;
}
----------------解决方案--------------------------------------------------------
楼上的方法也不错
----------------解决方案--------------------------------------------------------
public void jTextField1_keyTyped(KeyEvent e) {
if (e.getKeyChar()<'0' || e.getKeyChar()>'9') {
e.setKeyChar('\0');
return;
}
有这个方法吗??具体怎么调用??KeyEvent 参数怎么传进去??
----------------解决方案--------------------------------------------------------
自己在keyTyped方法里面调用这个方法
----------------解决方案--------------------------------------------------------
原来是keyTyped,我还以为jdk1.6中有jTextField1_keyTyped这个方法呢,呵呵。
----------------解决方案--------------------------------------------------------
呵呵,怎么可能会有这样的方法呢,标准API是不会这样命名的
----------------解决方案--------------------------------------------------------
  相关解决方案