java文本框输入数字_Java 文本框输入数字限制以及输入数字大小限制

问题:

之前我有一篇博文也写了这个问题,也是使用的字符串来控制文本框的输入数字

不过,那篇博文给的方法只能限制数字输入,以及数字输入长度的限制

今天给出可以限制输入数字大小的方法,例如:希望输入的数字最大不能超过35,那么36是绝对输入不进去的

而且,其他字符也是不能输入进去的

有兴趣的可以自己改成浮点数的输入大小限制(转载请说明来源:http://blog.csdn.net/Kilper)

代码:

package Test.csdn;

import java.awt.GridLayout;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

/**

*

* @ClassName NumLimit

* @Description 通过字符串来控制JTextField输入数字以及数字大小的示例

* 只能控制正整数的输入(没有包括0,因为设置了第一位不能输入0,如有需要可以自己更改)

* 如果有什么疑问请到作者博客留言或评论,博客地址在下面一行

* 有兴趣的可以改成浮点数的输入大小限制,Kilper就不再写浮点数的示例了

* @author Kilper http://blog.csdn.net/Kilper

* @date 2010-8-24 下午05:08:40

*

*/

public class NumLimit extends JFrame {

/**

* @Fields serialVersionUID : TODO

*/

private static final long serialVersionUID = 1133553442569412104L;

private static JTextField limit;

private static JTextField input;

public NumLimit(String title) {

super(title);

this.setSize(400, 100);

this.add(buildTestPanel()); // 加载面板到窗体中

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭按钮的事件响应

this.setLocationRelativeTo(null); // 窗体位置居中

}

/**

*

* @Title buildTestPanel

* @author Kilper http://blog.csdn.net/Kilper

* @Description: 获得构建好的JPanel面板

* @return JPanel

*/

private JPanel buildTestPanel() {

JPanel panel = new JPanel();

limit = new JTextField();

input = new JTextField();

panel.setLayout(new GridLayout(0, 2));

panel.add(new JLabel("数字输入限制设置限制框:"));

panel.add(limit);

panel.add(new JLabel("数字输入限制验证输入框:"));

panel.add(input);

// 为设置限制框也添加数字输入和大小限制

limit.addKeyListener(new KeyAdapter() {

public void keyTyped(KeyEvent e) {

String key = limit.getText();

String value = getLimit(key, 99999); // 该框只能输入最大99999的数字

if (value.indexOf(e.getKeyChar()) < 0)

e.consume();

}

});

input.addKeyListener(new KeyAdapter() {

public void keyTyped(KeyEvent e) {

String key = input.getText();

int count = Integer.valueOf(limit.getText().trim());

// 示例讲解:key = "13" count = 135

String value = getLimit(key, count);

// 示例讲解:返回的字符串使得value = "012345";

if (value.indexOf(e.getKeyChar()) < 0) // 如果输入6,则销毁该输入

// 输入字符,则销毁该输入

e.consume(); // 销毁输入

// 如果输入0-5之间,则不做处理,输入的数字会显示在屏幕中

}

});

return panel;

}

/**

*

* @Title getLimit

* @author Kilper http://blog.csdn.net/Kilper

* @Description: 获得限制字符串

* @return String

*/

private String getLimit(String key, int num) {

// 示例讲解:key = "13" count = 135

String value = String.valueOf(num); // value = "135";

int a[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, b = num;

// b = 135,a[] = {0,……};

int len = key.length(), length = value.length();

// len = 2,length = 3;

for (int i = 0; b > 0; i++, b /= 10)

a[length - 1 - i] = b % 10;

// a[] = {1,3,5,0,……};

int in;

if (key.equals(""))

in = 0;

else

in = Integer.valueOf(key) * 10;

// in = 130;

if (len < length - 1) {

if (len == 0)

value = string(1, 9); // 限制第一位不能输入0

else

value = string(0, 9);

} else if (len == length - 1) {

// 进入这里 in = 130 < num = 135

if (in <= num)

if (in == 0)

value = string(1, a[len]);

else

value = string(0, a[len]); // 所以:value = "012345";

else

value = "";

} else {

value = "";

}

// 返回的字符串为:"0123456"

return value;

}

/**

*

* @Title string

* @author Kilper http://blog.csdn.net/Kilper

* @Description: 获得从a开始,到b结束的字符串,例如:a=2,b=6,则返回:"23456"

* @return String

*/

private static String string(int a, int b) {

String value = "";

for (int i = a; i <= b; i++)

value += String.valueOf(i);

return value;

}

public static void main(String[] args) {

NumLimit test = new NumLimit("数字输入和大小测试"); // 新建NumLimit实例

test.setVisible(true);

}

}

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

杨大宝识

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值