其实做一个数字输入框和做一个普通的输入框,在使用的控件上来说没有任何区别,只要一个JTextField即可。但是既然是数字输入框,那么顾名思义就是只能输入数字,对吧。那么很好办,为这个JTextField添加键盘相应事件(比如keyPress),然后在这个keyPress(int keycode){}中添加代码来判断每一次数入的字符是不是数字,如果是,那么ok,显示这个字符;如果不是,那么no,不现实这个数字即可。参考代码如下
public void keyPress(int keycode){
如果 keycode >= 0 并且 <=9
那么 在JTextField的末尾追加keycode
否则 不做任何处理
}
public void keyPress(int keycode){
如果 keycode >= 0 并且 <=9
那么 在JTextField的末尾追加keycode
否则 不做任何处理
}
//IsDigital函数判断一个字符串是否由数字(int or long)组成
function isDigital(str)
{
for(ilen=0;ilen<str.length;ilen++)
{
if(str.charAt(ilen) < '0' || str.charAt(ilen) > '9' )
{
return false;
}
}
return true;
}
//IsFloat函数判断一个字符串是否由数字(int or long or float)组成
function IsFloat(str)
{
flag_Dec = 0
for(ilen=0;ilen<str.length;ilen++)
{
if(str.charAt(ilen) == '.')
{
flag_Dec++;
if(flag_Dec > 1)
return false;
else
continue;
}
if(str.charAt(ilen) < '0' || str.charAt(ilen) > '9' )
{
return false;
}
}
return true;
}
如果 keycode >= 0 并且 <=9
那么 在JTextField的末尾追加keycode
否则 不做任何处理
}吗?我也非常需要这段代码.
******************************************************************
/*
* Created on 2004-12-9
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package num;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author user
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class EnterNumber extends JFrame
{
JPanel panel;
JTextField enterNum;
public EnterNumber()
{
enterNum=new JTextField(5);
enterNum.addKeyListener(new EnterAction());
panel=new JPanel();
getContentPane().add(panel);
panel.add(enterNum);
addWindowListener(new WindowAction());
pack();
setVisible(true);
setLocation(300,300);
}
class WindowAction extends WindowAdapter
{
public void windowClosing(WindowEvent win_e)
{
System.exit(0);
}
}
class EnterAction extends KeyAdapter
{
public void keyPressed(KeyEvent enter_e)
{
System.out.println(enter_e.getKeyCode());
if(enter_e.getKeyCode()<48||enter_e.getKeyCode()>57)
{
JOptionPane.showMessageDialog(null,"请填写数字");
enterNum.setText("");
return;
}
}
}
public static void main(String args[])
{
new EnterNumber();
}
}
如果发现不是数字,
再提示重新输入吧
如果不是数字,就做什么什么样的操作。
比如背景变成红色等等的操作。然后再用有这种要求的文本框的时候,
就创建一个你自己的TextField的实例就可以了。
good luck
我也是用了处理KeyEvent事件的方法,行不通的
你不信试试
你们的这些也不行 啊
public void keyTyped(KeyEvent e){
char c = e.getKeyChar();
if(Character.isDigit(c) || c==KeyEvent.VK_BACK_SPACE || c==KeyEvent.VK_DELETE)
return;
e.consume();
}
public void keyPressed(KeyEvent e){}
public void keyReleased(KeyEvent e){}
};只允许输入数字,你自己加上小数点和负号即可~~~
*^_^*