社区
Java SE
帖子详情
TextField只能输入数字问题
sysmaster
2004-07-11 05:22:24
如何使TextField只能输入数字?
...全文
1375
8
打赏
收藏
TextField只能输入数字问题
如何使TextField只能输入数字?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tempzzz
2004-07-12
打赏
举报
回复
event.consume();
落了一对括号
tempzzz
2004-07-12
打赏
举报
回复
刚学习JAVA,正好看到这里,希望对你有帮助
textField.addKeyListener(new
KeyAdapter()
{
public void keyTyped(KeyEvent event)
{
char ch=event.getKeyChar();
if(ch<'0'||ch>'9')
event.consume;
}
}
});
摘于CoreJava第五版P308
hl_longman
2004-07-12
打赏
举报
回复
可以用掩码吧?1
azqf121
2004-07-12
打赏
举报
回复
提供一个全类,完全实现只输入数字
/**
* <p>Description: JNumberField 数字格式输入框</p>
* @version 1.0
*/
package jujin.common.swing;
import jujin.common.base.*;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
/**
* 本类为一文本输入对话框,是只充许输入数字格式的文本输入框
*/
public class JNumberField extends JTextField
implements ActionListener, FocusListener
{
/**
* 空构造函数
*/
public JNumberField()
{
this(true);
}
/**
* 带参数构造函数
* @param addAction 是否添加监听
*/
public JNumberField(boolean addAction)
{
this(0, 16, addAction);
}
/**
* 带参数构造函数
* @param declen 小数位长度
*/
public JNumberField(int decLen)
{
this(decLen, true);
}
/**
* 带参数构造函数
* @param declen 小数位长度
* @param addAction 是否添加监听
*/
public JNumberField(int decLen, boolean addAction)
{
this(decLen, 16, addAction);
}
/**
* 带参数构造函数
* @param declen 小数位长度
* @param maxlen 最大长度(含小数位)
*/
public JNumberField(int decLen, int maxLen)
{
this(decLen, maxLen, true);
}
/**
* 带参数构造函数
* @param declen 小数位长度
* @param maxlen 最大长度(含小数位)
* @param addAction 是否添加监听
*/
public JNumberField(int decLen, int maxLen, boolean addAction)
{
//初始大小
setPreferredSize(new Dimension(150, 25));
setDocument(new NumberDocument(decLen, maxLen));
//右对齐
super.setHorizontalAlignment(JTextField.RIGHT);
if (addAction)
{
addActionListener(this);
}
//焦点监听
addFocusListener(this);
}
/**
* 带参数构造函数
* @param declen 输入框长度
* @param maxlen 最大长度(含小数位)
* @param minRange 最小值
* @param maxRange 最大值
* @param addAction 是否添加监听
*/
public JNumberField(int decLen, int maxLen, double minRange, double maxRange,
boolean addAction)
{
setPreferredSize(new Dimension(150, 25));
setDocument(new NumberDocument(decLen, maxLen, minRange, maxRange));
//右对齐
super.setHorizontalAlignment(JTextField.RIGHT);
if (addAction)
{
addActionListener(this);
}
//焦点监听
addFocusListener(this);
}
public void actionPerformed(ActionEvent e)
{
//强制下一控件得到焦点
transferFocus();
}
/**
* 实现的焦点监听器接口
*/
public void focusGained(FocusEvent e)
{
//选择所有
selectAll();
}
public void focusLost(FocusEvent e)
{
}
public static void main(String[] args)
{
SwingUtil swingUtil = new SwingUtil();
swingUtil.setLookAndFeel();
JFrame frame = new JFrame();
//EXIT_ON_CLOSE == 3
frame.setDefaultCloseOperation(3);
frame.setTitle("JNumberField Demo");
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(new JNumberField(), BorderLayout.CENTER);
frame.getContentPane().add(new JNumberField(10), BorderLayout.CENTER);
frame.getContentPane().add(new JNumberField(10, 16), BorderLayout.CENTER);
frame.getContentPane().add(new JNumberField(10, 16, -10, 100, false),
BorderLayout.CENTER);
frame.setSize(400, 320);
//swingUtil.setCenter(frame);
}
}
/**
* 数字框类
*/
class NumberDocument extends PlainDocument
{
int maxLength = 16;
int decLength = 0;
double minRange = Double.MIN_VALUE;
double maxRange = Double.MAX_VALUE;
/**
* 空构造函数
*/
public NumberDocument() {}
/**
* 带参数构造函数
* @param decLen int 小数位长度
* @param maxLen int 最大长度(含小数位)
*/
public NumberDocument(int decLen, int maxLen)
{
maxLength = maxLen;
decLength = decLen;
}
/**
* 带参数构造函数
* @param decLen int 小数位长度
* @param maxLen int 最大长度(含小数位)
* @param minRange double 最小值
* @param maxRange double 最大值
*/
public NumberDocument(int decLen, int maxLen, double minRange,
double maxRange)
{
this(decLen, maxLen);
this.minRange = minRange;
this.maxRange = maxRange;
}
/**
* 带参数构造函数
* @param decLen int 小数位长度
*/
public NumberDocument(int decLen)
{
decLength = decLen;
}
/**
* 添加字符串
* @param offset - the offset into the document to insert the content >= 0
* @param s - 要插入的字串
* @param a - 联合插入内容的属性
*/
public void insertString(int offset, String s, AttributeSet a) throws
BadLocationException
{
int len = getLength();
String str = getText(0, len);
int decPos = str.indexOf(".");
if (
s.equals("F") || s.equals("f") || s.equals("D") || s.equals("d")
|| (str + s).length() > maxLength || (decPos > -1 && offset > decPos
&& ((str.substring(decPos + 1)) + s).length() > decLength)
|| (str.trim().equals("0") && !s.substring(0, 1).equals(".")
&& offset != 0) || (s.equals(".") && decLength == 0)
|| (s.indexOf(".") > -1
&& s.substring(s.indexOf(".") + 1).length() > decLength))
{
Toolkit.getDefaultToolkit().beep();
return;
}
try
{
str = str.substring(0, offset) + s + str.substring(offset, len);
if (!str.equals("-") || (str.equals("-") && minRange <= 0))
{
double d = Double.parseDouble(str);
if (d < minRange || d > maxRange)
{
throw new Exception();
}
}
}
catch (Exception e)
{
Toolkit.getDefaultToolkit().beep();
return;
}
super.insertString(offset, s, a);
}
}
maowu
2004-07-12
打赏
举报
回复
用 JFormattedTextField
zipField = new JFormattedTextField(
createFormatter("#####"));
qybao
2004-07-11
打赏
举报
回复
加键盘监听器
KeyListener kl = new KeyListener() {
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() < '0' ||
e.getKeyChar() > '9') {
e.setKeyChar((char)0);
return;
}
}
};
your_TextField = new TextField();
your_TextField.addKeyListener(kl);
shine333
2004-07-11
打赏
举报
回复
具体代码可能api有些出入,
addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e) {
int keyCode = e.getKeyCode();
switch (keyCode) {//判断按下的是哪个键
case KeyEvent.VK_0:......
case KeyEvent.VK_9:
break;
default:
e.consume(); //关键,屏蔽掉非法输入
}
}
});
hui3zhihui
2004-07-11
打赏
举报
回复
有两种方法:
一、你可以判断AscII的值
二、使用格式化
Number
TextField
:一个只允许
输入
数字
的
TextField
numberField.placeholder=@"
只能
输入
数字
"; //设置精度 numberField.numeric=CGNumeric(10, 4); [self.view addSubview:numberField]; } #常用属性# ##numeric## Numeric结构体用来表示
数字
的
使用UI
TextField
限制只可
输入
中,英文,
数字
的方法
在我们日常开发中经常遇到一些情况,要UI
TextField
只能
输入
某一种特定的字符.比如大写A-Z或者小写a-z,或者汉字.或者
数字
.那么该如何实现呢,下面通过这篇文章来看看吧。
QT QML跨平台移动APP编程
跟着项目学习QT QML跨平台移动APP编程技术,从QML的基本组件Lable、
TextField
到StackView、ListView,再到C++的算法、QML和C++的结合,最后到部署在IOS和Android平台,全方位的体验跨平台移动APP的开发流程及QT QML...
解析使用js判断
只能
输入
数字
、字母等验证的方法(总结)
JS判断
只能
是
数字
和小数点0.不能
输入
中文1)<input onpaste=”return false;” type=”text” name=”
textfield
” style=”width:400px; ime-mode:disabled” value=””>2)[removed]function chkIt(frm){if ...
JS
只能
输入
数字
或
数字
和字母等的正则表达式
JS判断
只能
是
数字
和小数点 0.不能
输入
中文 1)<input onpaste=”return false;” type=”text” name=”
textfield
” style=”width:400px; ime-mode:disabled” value=””> 2) 代码如下: [removed] function...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章