文本控件内容录入限制(含源代码说明)(一)

博采众生在程序 的开发过程中,经常用到对文本框录入内容的检验,实际上我们让实现简单一些,通过一个统一的限制,例如只能输入0-9数字,或是含有小数点和负号的数学数值等等。

本文向你展示,通过Java的文本类型的父类JTextComponent中控制文本编辑(setDocument)和输入检查(setInputVerifier)的API实现输 入限制。请注意,所有的实现没有通过事件机制。

整个例子通过两部分介绍,先是介绍程序的例子,而后再介绍如何的实现。

在本例子中仅使用了文本框(JTextField),文本域(JTextArea)与此类似。文中的对话框在使用的时候可以设定为不出现,代之以系统 声音,如Windows中“当当”的声音。

博采众生

图一,程序总界面

博采众生

图二,实现对IP地址录入的检查

如果录入错误格式的IP地址,将会弹出该对话框,同时光标不允许离开,除非把刚才的录入内容清除为空,思想就是,通过“.”的数量 和位置确定,截取字段,判断范围。

博采众生

图三,实现录入大写或是小写的设定

这个功能的实现主要就是通过setDocument()API进行的。Document类控制着文本框内容的编辑,通过对插入字符的提前处理(使用 String类中大小写的转换),把处理过得内容传递给文本框。

博采众生

图四,数学数值的录入检查

也是通过setDocument()API进行提前处理和判断,原理同图三的解释说明。

博采众生

图五,0-9数字录入的限制

博采众生

图六,数值录入范围的限制

注意该方法的实现是把数值(任意型)转换为float类型的,然后在判断我们设定的范围,这个实现也是通过setInputVerifier()API 完成。如果录入的为非数值,那么将会有错误的提示信息。

博采众生

图七,数值录入范围的限制

以下为程序代码清单,文中加重颜色部分为是实现检验代码:

  1. package net.csdn.blog.qb2049_xg.exam;
  2. import java.awt.Container;
  3. import java.awt.GridBagConstraints;
  4. import java.awt.GridBagLayout;
  5. import javax.swing.JFrame;
  6. import javax.swing.JLabel;
  7. import javax.swing.JTextField;
  8. import net.csdn.blog.qb2049_xg.tools.JTextHelp;
  9. import net.csdn.blog.qb2049_xg.tools.MidScr;
  10. /**
  11.  * @author Ulysses Ma
  12.  * @date 2008-9-24
  13.  */
  14. public class JTextHelpExam extends JFrame {
  15.     /**
  16.      * 粗体部分实现了对这种应用实现
  17.      */
  18.     private static final long serialVersionUID = 2049L;
  19.     
  20.     //构造函数
  21.     public JTextHelpExam(){
  22.         this.setTitle("测试文本框的特殊需 求");
  23.         this.setSize(450,300);
  24.         MidScr ms=new MidScr(this);
  25.         this.setLocation(ms.getX(),ms.getY());
  26.         
  27.         Container c=this.getContentPane();
  28.         GridBagLayout gb=new GridBagLayout ();
  29.         GridBagConstraints con=new GridBagConstraints();
  30.         c.setLayout (gb);
  31.         
  32.         //UI设定
  33.         con.fill=GridBagConstraints.NONE;
  34.         con.gridx=0;
  35.         con.gridwidth=2;
  36.         con.gridy=0;
  37.         con.gridheight=2;
  38.         JLabel title_l=new JLabel("<html><h1>测试文本框的特殊需求 </h1></html>");
  39.         c.add(title_l,con);
  40.         con.gridy=2;
  41.         con.gridheight=1;
  42.         con.gridwidth=1;
  43.         JLabel str_number_l=new JLabel("仅能接受9个阿拉伯数字");
  44.         c.add (str_number_l,con);
  45.         JTextField str_number_t=new JTextField(15);
  46.         new JTextHelp (str_number_t,JTextHelp.STRICT_NUMBER,true).insertCheck ();
  47.         str_number_t.setToolTipText("有对话框提 示!");
  48.         con.gridx=1;
  49.         c.add(str_number_t,con);
  50.         
  51.         con.gridx= 0 ;
  52.         con.gridy=3;
  53.         JLabel number_l=new JLabel("仅能接受含有小数点和负号的录入");
  54.         c.add (number_l,con);
  55.         JTextField number_t=new JTextField(15);
  56.         new JTextHelp (number_t,JTextHelp.NUMBER,true).insertCheck ();
  57.         number_t.setToolTipText("有对话框提 示!");
  58.         con.gridx=1;
  59.         c.add(number_t,con);
  60.         
  61.         con.gridy= 4 ;
  62.         con.gridx=0;
  63.         JLabel upperCase_l=new JLabel("敲入字母时就只是大写字母");
  64.         c.add (upperCase_l,con);
  65.         JTextField upperCase_t=new JTextField(15);
  66.         new JTextHelp (upperCase_t,JTextHelp.UPPERCASE).insertCheck();
  67.         con.gridx=1;
  68.         c.add (upperCase_t,con);
  69.         
  70.         con.gridy=5;
  71.         con.gridx=0;
  72.         JLabel lowerCase_l=new JLabel("敲入字母时就只是小写字 母");
  73.         c.add(lowerCase_l,con);
  74.         JTextField lowerCase_t=new JTextField (15);
  75.         new JTextHelp(lowerCase_t,JTextHelp.LOWERCASE).insertCheck();
  76.         con.gridx=1;
  77.         c.add(lowerCase_t,con);
  78.         
  79.         con.gridy= 6 ;
  80.         con.gridx=0;
  81.         JLabel ip_l=new JLabel("IP地址录入检查");
  82.         c.add (ip_l,con);
  83.         JTextField ip_t=new JTextField(15);
  84.         new JTextHelp (ip_t,JTextHelp.IPv4CHECK,true).insertCheck ();
  85.         ip_t.setToolTipText("有对话框提 示!");
  86.         con.gridx=1;
  87.         c.add(ip_t,con);
  88.         
  89.         con.gridy= 7 ;
  90.         con.gridx=0;
  91.         JLabel max_min_l=new JLabel("数值大小范围的限制");
  92.         c.add (max_min_l,con);
  93.         JTextField max_min_t=new JTextField(15);
  94.         new JTextHelp (max_min_t,JTextHelp.MAX_MIN,true,100,1000).insertCheck();
  95.         max_min_t.setToolTipText ("有对话框提示,本例子中范围限制在100到1000之间!");
  96.         con.gridx=1;
  97.         c.add(max_min_t,con);   
  98.         
  99.         this.setVisible(true);
  100.         this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
  101.     }
  102.     /**
  103.      * @param args
  104.      */
  105.     public static void main (String[] args) {
  106.         // TODO Auto- generated method stub
  107.        JFrame.setDefaultLookAndFeelDecorated (true);
  108.        new JTextHelpExam();
  109.     }
  110. }

本例中引用了两个自己写的工具类,其中MidScr是实现窗体居中显示,可以点击链接查看这个类的说明,JTextHelp是关于如何实现,请你查看下一文章:文本控件内容录入限制(含源代码说明)(二)

<script type="text/JavaScript"> alimama_pid="mm_11642003_1480608_3725409"; alimama_titlecolor="0000FF"; alimama_descolor ="000000"; alimama_bgcolor="FFFFFF"; alimama_bordercolor="E6E6E6"; alimama_linkcolor="008000"; alimama_bottomcolor="FFFFFF"; alimama_anglesize="0"; alimama_bgpic="0"; alimama_icon="0"; alimama_sizecode="11"; alimama_width=760; alimama_height=90; alimama_type=2; </script> <script src="http://a.alimama.cn/inf.js" type=text/javascript> </script>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值