`
gyabooks
  • 浏览: 23776 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • JAVA
阅读更多

 

博采众生本文介绍的源代码内容需要 配合这篇文章的第一篇一起,点击文本控件内容录入限制(含源代码说明)(一)查看,所有的源代码可以在CSDN的下载空间找到,名字为:“ 文本录入限制源代码”,同时也可以留言(Email)我来发送给你,希望你在看过以后,留下建议。

  1. packagenet.csdn.blog.qb2049_xg.tools;
  2. importjava.awt.Toolkit;
  3. importjavax.swing.InputVerifier;
  4. importjavax.swing.JComponent;
  5. importjavax.swing.JOptionPane;
  6. importjavax.swing.text.AttributeSet;
  7. importjavax.swing.text.BadLocationException;
  8. importjavax.swing.text.JTextComponent;
  9. importjavax.swing.text.PlainDocument;
  10. /**
  11. *@authorUlyssesMa
  12. *@date2008-9-10
  13. *参考以下网址SteveCheng‘sBlog:
  14. *http://blog.csdn.net/stevech/archive/2006/04/09/656269.aspx
  15. */
  16. publicclassJTextHelp{
  17. //功能控件
  18. privateJTextComponentjtc;
  19. //实现各个功能常量的定义
  20. publicstaticfinalintNUMBER=1;
  21. publicstaticfinalintSTRICT_NUMBER=2;
  22. publicstaticfinalintLOWERCASE=3;
  23. publicstaticfinalintUPPERCASE=4;
  24. publicstaticfinalintIPv4CHECK=5;
  25. publicstaticfinalintMAX_MIN=6;
  26. //全局功能变量
  27. publicinttask=0;
  28. publicintmax=0;
  29. publicintmin=0;
  30. //信息提示的全局变量
  31. publicStringmessage=null;
  32. //是否需要提示信息的设定,默认值为:false(不需要)
  33. privatebooleanneedMessage=false;
  34. //构造函数1,实现是否需要提示信息
  35. publicJTextHelp (JTextComponentjtc,inttask,booleanneedMessage){
  36. if(task! =NUMBER&&task!=LOWERCASE&
  37. &nbs p;task!=UPPERCASE&&task!=IPv4CHECK&&task!=STRICT_NUMBER&&task!=MAX_MIN) {
  38. &nbs p;thrownewIllegalArgumentException("JTextHelp的任务只能 是:"+
  39. &nbs p;"NUMBER, STRICT_NUMBER,IPv4CHECK,LOWERCASE,MAX_MIN或是UPPERCASE");
  40. }
  41. this.jtc=jtc;
  42. this.task=task;
  43. this.needMessage=needMessage;
  44. }
  45. //构造函数2,实现不需要提示信息
  46. publicJTextHelp (JTextComponentjtc,inttask){
  47. if (task!=NUMBER&&task!=LOWERCASE&
  48. &nbs p;task!=UPPERCASE&&task!=IPv4CHECK&&task!=STRICT_NUMBER&&task!=MAX_MIN){
  49. &nbs p;thrownewIllegalArgumentException("JTextHelp的任务只能 是:"+
  50. &nbs p;"NUMBER, STRICT_NUMBER,IPv4CHECK,LOWERCASE,MAX_MIN或是UPPERCASE");
  51. }
  52. this.jtc=jtc;
  53. this.task=task;
  54. }
  55. //构造函数3,实现是否需要提示信息,数字范围限 制
  56. publicJTextHelp (JTextComponentjtc,inttask,booleanneedMessage,intmin,intmax){
  57. if (task!=NUMBER&&task!=LOWERCASE&
  58. &nbs p;task!=UPPERCASE&&task!=IPv4CHECK&&task!=STRICT_NUMBER&&task!=MAX_MIN){
  59. &nbs p;thrownewIllegalArgumentException("JTextHelp的任务只能 是:"+
  60. &nbs p;"NUMBER, STRICT_NUMBER,IPv4CHECK,LOWERCASE,MAX_MIN或是UPPERCASE");
  61. }
  62. this.jtc=jtc;
  63. this.task=task;
  64. this.needMessage=needMessage;
  65. this.min=min;
  66. this.max=max;
  67. }
  68. //构造函数4,实现不需要提示信息,数字范围限制
  69. publicJTextHelp (JTextComponentjtc,inttask,intmin,intmax){
  70. if(task! =NUMBER&&task!=LOWERCASE&
  71. &nbs p;task!=UPPERCASE&&task!=IPv4CHECK&&task!=STRICT_NUMBER&&task!=MAX_MIN) {
  72. &nbs p;thrownewIllegalArgumentException("JTextHelp的任务只能 是:"+
  73. &nbs p;"NUMBER, STRICT_NUMBER,IPv4CHECK,LOWERCASE,MAX_MIN或是UPPERCASE");
  74. }
  75. this.jtc=jtc;
  76. this.task=task;
  77. this.min=min;
  78. this.max=max;
  79. }
  80. //构造函数5,无参可以调用处理方法
  81. publicJTextHelp(){}
  82. //进行数据任务输入的检查
  83. publicvoidinsertCheck(){
  84. switch (task){
  85. caseNUMBER:{
  86. jtc. setDocument(newJNumber());
  87. };break;
  88. caseSTRICT_NUMBER:{
  89. jtc.setDoc ument(newJStrictNumber());
  90. };break;
  91. caseUPPERCASE:{
  92. jtc. setDocument(newLetterCaseConvert (LetterCaseConvert.UPCASE));
  93. };break;
  94. caseLOWERCASE:{
  95. jtc.setDoc ument(newLetterCaseConvert(LetterCaseConvert.LOWERCASE));
  96. };break;
  97. caseIPv4CHECK:{
  98. jtc. setInputVerifier(newMyInputVerifier(JTextHelp.IPv4CHECK));
  99. };break;
  100. caseMAX_MIN:{
  101. jtc.setInp utVerifier(newMyInputVerifier(JTextHelp.MAX_MIN,min,max));
  102. };break;
  103. }
  104. }
  105. //严格数字输入不含的小数点和负号
  106. classJStrictNumberextendsPlainDocument{
  107. //序列化标识符的设定
  108. privatestaticfinallongserialVersionUID=2049L;
  109. /*
  110. *offs:代表了起始位置
  111. *str:代表插入字符串
  112. *a:插入内容的属性
  113. */
  114. //@exceptionBadLoactionException
  115. publicvoidinsertString(intoffs,Stringstr,AttributeSeta)throwsBadLocationException{
  116. charsource[]=str.toCharArray();
  117. charresult[]=newchar[source.length];
  118. message="错误的录入,系统仅接受数字的录入,请检查你的输入!";
  119. intj=0;
  120. for(inti=0;i<source.length;i++){
  121. &nbs p;if(Character.isDigit(source[i])){
  122. &nbs p;result[j++]=source[i];
  123. &nbs p;}else{
  124. &nbs p;if(needMessage){
  125. &nbs p;JOptionPane.showMessageDialog(null,message,
  126. &nbs p;"信息提示",JOptionPane.ERROR_MESSAGE);
  127. &nbs p;}else
  128. &nbs p;{
  129. &nbs p;Toolkit.getDefaultToolkit().beep();
  130. &nbs p;}
  131. &nbs p;return;
  132. }
  133. }
  134. super.insertString(offs,newString (result,0,j),a);
  135. }
  136. }
  137. //普通的数字输入,含有小数和负号,负号必须放在 第一位,小数点的个数只能是一个
  138. classJNumberextendsPlainDocument{
  139. //序列化标识符的设定
  140. privatestaticfinallongserialVersionUID=2049L;
  141. //插入方法的重写
  142. publicvoidinsertString(intoffs,Stringstr,AttributeSeta)throwsBadLocationException{
  143. charsource[]=str.toCharArray();
  144. charresult[]=newchar[source.length];
  145. intj=0;
  146. for(inti=0;i<source.length;i++){
  147. if((source[i]=='-') &&jtc.getCaretPosition()==0&&countMinus(jtc.getText()) ==0){
  148. &nbs p;result[j++]=source[i];
  149. } elseif(Character.isDigit (source[i])){
  150. &nbs p;result[j]=source[i];
  151. &nbs p;j++;
  152. } elseif(source[i]=='.'&&countDot(jtc.getText())==0) {
  153. &nbs p;result[j++]=source[i];
  154. } else{
  155. &nbs p;if(needMessage){
  156. &nbs p;JOptionPane.showMessageDialog(null,"错误的录入,系统仅接受数字(含小数和负数)的录 入,"+
  157. &nbs p;"请检查你的输入!","信息提 示",JOptionPane.ERROR_MESSAGE);
  158. &nbs p;}else{
  159. &nbs p;Toolkit.getDefaultToolkit().beep();
  160. &nbs p;}
  161. &nbs p;return;
  162. }
  163. }
  164. super.insertString(offs,newString (result,0,j),a);
  165. }
  166. }
  167. //大小写输入的转换
  168. classLetterCaseConvertextendsPlainDocument{
  169. //设定大写或是小写
  170. privatestaticfinalintUPCASE=1;
  171. privatestaticfinalintLOWERCASE=2;
  172. //序列化标识符的设定
  173. privatestaticfinallongserialVersionUID=2049L;
  174. //设定功能变量
  175. privateintchan=0;
  176. publicLetterCaseConvert(intchan) {
  177. this.chan=chan;
  178. }
  179. //插入方法的重写
  180. publicvoidinsertString(intoffs,Stringstr,AttributeSeta)throwsBadLocationException{
  181. Stringresult=null;
  182. if(chan==LetterCaseConvert.UPCASE){
  183. result=str .toUpperCase();
  184. super.insertString(offs,result,a);
  185. }elseif(chan==LetterCaseConvert.LOWERCASE) {
  186. resu lt=str.toLowerCase();
  187. <sp an class="keyword">super<span>.insertString(offs,result,a);</span></sp>
  188. }
  189. }
  190. }
  191. /*
  192. *实现文本输入后的检查,输入整数的范围检查,输入 IP地址正确性检查
  193. */
  194. classMyInputVerifierextendsInputVerifier{
  195. privateJTextComponentjc;
  196. privatefloattask=0;
  197. privatefloatmin,max;
  198. publicMyInputVerifier(inttask) {
  199. this.task=task;
  200. }
  201. publicMyInputVerifier(inttask,floatmin,floatmax){
  202. this.task=task;
  203. this.max=max;
  204. this.min=min;
  205. }
  206. publicbooleanverify (JComponentarg0){
  207. booleanrValue=false;
  208. jc=(JTextComponent) arg0;
  209. if(jc.getText().equals(""))
  210. returntrue;
  211. if(task==JTextHelp.IPv4CHECK){
  212. rVal ue=checkIP(jc.getText());
  213. <sp an class="keyword">if<span>(!rValue){</span></sp>
  214. &nbs p;JOptionPane.showMessageDialog(null,"输入的IP地址不合法,请检查你的输入!","信息提 示",JOptionPane.ERROR_MESSAGE);
  215. &nbs p;returnfalse;
  216. }
  217. }
  218. if(task==JTextHelp.MAX_MIN){
  219. <sp an class="keyword">try<span>{</span></sp>
  220. &nbs p;intvalue=Integer.parseInt(jc.getText ());
  221. &nbs p;if(value>=min&&value<=max)
  222. &nbs p;rValue=true;
  223. &nbs p;else{
  224. &nbs p;JOptionPane.showMessageDialog(null,"此处数据被限制在"+String.valueOf (this.min)+
  225. &nbs p; "-"+String.valueOf(this.max) +"之间(含这两个数),请检查输入!","信息提 示",JOptionPane.ERROR_MESSAGE);
  226. &nbs p;rValue=false;
  227. &nbs p;}
  228. } catch(NumberFormatExceptione){
  229. &nbs p;JOptionPane.showMessageDialog(null," 错误的录入,请检查你的输入!"+e.getMessage(),"信息提 示",JOptionPane.ERROR_MESSAGE);
  230. &nbs p;rValue=false;
  231. }
  232. }
  233. returnrValue;
  234. }
  235. }
  236. //计算字符串中小数点的个数
  237. publicintcountDot(Stringstr){
  238. intcount=0;
  239. charstrChar[]=str.toCharArray();
  240. for(inti=0;i<strChar.length;i++)
  241. if(strChar[i]=='.'){
  242. count++; SPAN>
  243. }
  244. returncount;
  245. }
  246. //计算字符串中负号"-"的个数
  247. publicintcountMinus(Stringstr){
  248. intcount=0;
  249. charstrChar[]=str.toCharArray();
  250. for(inti=0;i<strChar.length;i++)
  251. if(strChar[i]=='-'){
  252. count++; SPAN>
  253. }
  254. returncount;
  255. }
  256. //检查IP地址是否合法
  257. publicbooleancheckIP(Stringstr){
  258. intdot[] =newint[4];
  259. Stringtmp1,tmp2,tmp3,tmp4;
  260. /*初步判断是否为合法的IP字符串
  261. *开始和结束不能 是".";
  262. *字符串中的'.'数量是3 个;
  263. *字符串中的字符串长度 必须小于16;
  264. */
  265. if (str.startsWith("."))
  266. returnfalse;
  267. if (str.lastIndexOf(".")==(str.length()-1))
  268. returnfalse;
  269. if (str.length()>15)
  270. returnfalse;
  271. if (countDot(str)!=3)
  272. returnfalse;
  273. /*
  274. *字符的截取,然后进行正整数判断
  275. */
  276. for(inti=0;i<3;i++){
  277. dot[i+1]=str.indexOf(".",dot[i]+1);
  278. }
  279. tmp1=str.substring(dot[0],dot[1]);
  280. tmp2=str.substring(dot[1]+1,dot[2]);
  281. tmp3=str.substring(dot[2]+1,dot[3]);
  282. tmp4=str.substring(dot[3]+1,str.length());
  283. try {
  284. inta1=Integer.parseInt(tmp1);
  285. inta2=Integer.parseInt(tmp2);
  286. inta3=Integer.parseInt(tmp3);
  287. inta4=Integer.parseInt(tmp4);
  288. if(a1<0||a1>255||a2<0||a2>255||a3<0||a3>255||a4<0||a4>255)
  289. returnfalse;
  290. returntrue;
  291. }catch (NumberFormatExceptionnfe){
  292. returnfalse;
  293. }
  294. }
  295. }

分享到:
评论

相关推荐

    文本录入限制源代码-Java

    实现了对文本控件类录入限制,可以只能输入数值或是数字,或是IP地址检查,有关情况可以访问我的blog:http://blog.csdn.net/QB2049_XG/archive/2008/09/26/2984645.aspx,查看是否值得下载。

    java小程序之简单学生信息录入界面

    在提供的压缩文件“java小程序之学生信息界面”中,包含了这个项目的源代码和资源文件。通过阅读和分析这些代码,你可以更深入地理解如何利用Java Swing和Windows Builder构建用户界面,以及如何实现简单的数据处理...

    学生信息管理程序 源代码

    随着信息技术的广泛应用和在...这个简单的文本编辑器软件—学生信息录入,主要是将学生的信息录入并且显示出来。本程序主要是通过使用JAVA中的一些控件来实现功能按钮。通过事件的响应来实现各框架,各按钮间的功能实现

    JavaScript完全自学宝典 源代码

    1.本书1~21章所附代码的运行环境 操作系统:Windows 2003、Windows XP Professional,或者Windows 2000 开发环境:UltraEdit12.10a、eclipse-jee-europa Web浏览器:Microsoft Internet Explorer 6.0及以上版本 ...

    VB工资管理系统(源代码+可执行程序+论文+开题报告+外文翻译+答辩ppt).rar

    3. **源代码**:源代码是程序员用高级语言编写的程序文本,是程序的原始形式。在VB工资管理系统中,源代码是理解系统工作原理的关键,学习者可以通过阅读源代码,了解如何使用VB实现特定的业务逻辑和数据库操作。 4...

    VB绩效评价管理系统设计(源代码+系统+答辩PPT)【VB】.zip

    1. **源代码**:源代码是程序员用VB编写的程序文本,它包含了各种函数、类、控件和事件处理程序,用于实现系统的各项功能。在VB中,开发者可以利用窗体(Forms)、控件(Controls)和模块(Modules)来构建用户界面...

    Visual C++ 2005入门经典--源代码及课后练习答案

    该资料是《Visual C++ 2005入门经典》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2005入门经典 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2005 原出版社: Wiley 作者: (美)Ivor Horton...

    Java代码-学生信息管理界面

    `JFrame`上可以添加各种组件,如`JTable`用于显示学生信息,`JLabel`用于文本提示,`JButton`用于执行操作,以及`JTextField`和`JComboBox`等输入控件用于数据录入。 对于学生信息的展示,项目可能使用了`JTable`...

    编辑网格控件

    1. **源码**:提供了编辑网格控件的实现代码,可能是用C#、Java、JavaScript等语言编写,供开发者学习和二次开发使用。 2. **示例**:包含了一些使用编辑网格控件的实际案例,演示了如何在实际项目中集成和使用该...

    VB工资管理系统设计与实现(源代码+论文)【VB】.zip

    源代码和论文的提供意味着该系统已经经过了完整的开发流程,有助于学习者理解和模仿。 以上就是VB工资管理系统设计与实现中的核心知识点。通过学习和实践,开发者不仅可以掌握VB编程技能,还能深入了解管理信息系统...

    2021-2022计算机二级等级考试试题及答案No.19085.docx

    - **题目解析**:Java源代码文件编译后的字节码文件的扩展名为`.class`。 - **知识点拓展**: - Java编译过程。 - 字节码的作用。 - Java虚拟机(JVM)的概念。 #### 9. Java保留字 - **题目解析**:保留字是指...

    基于Zxing的二维码扫码DELPHI源码,XE10.1UP1亲测通过

    二维码扫码是一种常见的数据录入方式,它通过图像识别技术将二维条形码中的信息解码为可读的文本或数字。在IT行业中,二维码被广泛应用于移动支付、产品追溯、信息分享等领域。Zxing(ZXing,发音为 "zebra crossing...

    2021-2022计算机二级等级考试试题及答案No.1552.docx

    1. **源代码与字节码文件对应关系**:Java 编译器会为源代码文件中定义的每个类生成一个对应的 `.class` 文件。 ### Word 文档编辑 1. **字符删除操作**:在 Word 中,默认情况下,使用 `Delete` 键删除插入点右侧...

    华报智能报表工具

    数据源SDK源代码:这些源代码用于帮助开发人员生成加载报表数据用的XML数据文本,它们可以由开发人员根据项目的需要自由修改。目前提供语言版本包括:Delphi,VS.Net C#,Java。 帮助文档:微软标准CHM帮助文件,...

    简易的电话薄管理系统

    在【源代码】文件中,我们可以看到实现上述功能的具体VB代码。通过对这些代码的分析和学习,可以深入理解VB的编程原理,以及如何利用VB来开发实际应用。此外,对于初学者来说,这是一个很好的实践项目,可以帮助他们...

    2021-2022计算机二级等级考试试题及答案No.12300.docx

    ### 计算机二级等级考试知识点解析 #### 操作系统与语言处理系统 - **操作系统**:是指管理和控制计算机硬件与软件资源的计算机程序。它为用户提供了一个与计算机硬件交互的界面,并负责管理计算机的各种资源(如...

    (仿微信底部输入框__带表情,语音发送,选择图片等)androidnewface

    - 源代码文件(Java或Kotlin),包括Activity、Fragment、Adapter和自定义View的实现。 - 资源文件(XML布局文件、图片资源、字符串资源等),用于构建UI界面和表情面板。 - 资源库依赖(如Gradle配置文件),可能...

    2021-2022计算机二级等级考试试题及答案No.10926.docx

    程序可以是用高级编程语言编写的源代码,也可以是经过编译或解释后的机器码。程序是实现计算机功能的基础。 #### 知识点5:C语言程序设计 **题目描述:** 以下程序的输出结果是什么? ```c #include main() { int...

    2021-2022计算机二级等级考试试题及答案No.11623.docx

    ### 计算机二级等级考试知识点解析 #### 1. 计算机病毒传播途径 - **知识点**:计算机病毒的传播方式主要包括两种途径:**计算机网络**和**磁性存储介质**。 - **解析**:计算机病毒可以通过互联网、局域网等网络...

    2021-2022计算机二级等级考试试题及答案No.11625.docx

    非结合型控件不直接关联到任何数据源,常用于显示固定文本或图片,或作为用户输入的接收器。 ### 26. Java 字符串操作 **知识点**:字符串变量不能直接访问 length 属性。 **详细解释**:在 Java 中,字符串是一个...

Global site tag (gtag.js) - Google Analytics