`
a137268431
  • 浏览: 146346 次
文章分类
社区版块
存档分类
最新评论

Swing开发之JTextField篇

 
阅读更多
JTextField继承JTextComponent类,因此它也可以使用JTextComponent抽象类里面许多好用的方法,如copy(),paste(),setText(),isEditable()等等。我们可以在很多地方使用JTextField,JTextField是一个单行的输入组件。
JTextField 具有建立字符串的方法,此字符串用作针对被激发的操作事件的命令字符串。java.awt.TextField 把字段文本用作针对 ActionEvent 的命令字符串。如果通过 setActionCommand 方法设置的命令字符串不为 null,则 JTextField 将使用该字符串来保持与 java.awt.TextField 的兼容性,否则将使用字段文本来保持兼容性。
setEchoChar 和 getEchoChar 方法不是直接提供的,以避免可插入的外观的新实现意外公开密码字符。为了提供类似密码的服务,单独的类 JPasswordField 扩展了 JTextField,从而通过可插入外观独立地提供此服务。
构造方法:
JTextField()
构造一个新的 TextField。
JTextField(Document doc, String text, int columns)
构造一个新的 JTextField,它使用给定文本存储模型和给定的列数。
JTextField(int columns)
构造一个具有指定列数的新的空 TextField。
JTextField(String text)
构造一个用指定文本初始化的新 TextField。
JTextField(String text, int columns)
构造一个用指定文本和列初始化的新 TextField。

常用方法:
addActionListener(ActionListener l)
添加指定的操作侦听器以从此文本字段接收操作事件。
getColumns()
返回此 TextField 中的列数。
getColumnWidth()
返回列宽度。
setActionCommand(String command)
设置用于操作事件的命令字符串。
setDocument(Document doc)
将编辑器与一个文本文档关联。
setFont(Font f)
设置当前字体。
setHorizontalAlignment(int alignment)
设置文本的水平对齐方式。
getDocument()
获取与编辑器关联的模型。
getText()
返回此 TextComponent 中包含的文本。
isEditable()
返回指示此 TextComponent 是否可编辑的 boolean。
setDragEnabled(boolean b)
设置 dragEnabled 属性,该属性必须为 true 才能确保启用对此组件的自动拖动处理(拖放操作的第一部分)。
setEditable(boolean b)
设置指定的 boolean 变量,以指示此 TextComponent 是否应该为可编辑的。
setText(String t)
将此 TextComponent 文本设置为指定文本。


例 1 :共享数据模型
Java代码收藏代码
  1. importjavax.swing.BoxLayout;
  2. importjavax.swing.JFrame;
  3. importjavax.swing.JScrollPane;
  4. importjavax.swing.JTextArea;
  5. importjavax.swing.JTextField;
  6. importjavax.swing.text.Document;
  7. publicclassShareModel{
  8. publicstaticvoidmain(Stringargs[]){
  9. JFrameframe=newJFrame("SharingSample");
  10. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  11. JTextFieldtextarea1=newJTextField();
  12. Documentdocument=textarea1.getDocument();
  13. JTextAreatextarea2=newJTextArea(document);
  14. JTextAreatextarea3=newJTextArea(document);
  15. frame.setLayout(newBoxLayout(frame.getContentPane(),BoxLayout.Y_AXIS));
  16. frame.add(newJScrollPane(textarea1));
  17. frame.add(newJScrollPane(textarea2));
  18. frame.add(newJScrollPane(textarea3));
  19. frame.setSize(300,400);
  20. frame.setVisible(true);
  21. }
  22. }

例 2 : 验证文本框,如果第一个文本框中为输入数字则第二个文本框不能输入。
Java代码收藏代码
  1. importjava.awt.BorderLayout;
  2. importjavax.swing.InputVerifier;
  3. importjavax.swing.JComponent;
  4. importjavax.swing.JFrame;
  5. importjavax.swing.JTextField;
  6. publicclassVerifierSample{
  7. publicstaticvoidmain(Stringargs[]){
  8. JFrameframe=newJFrame("VerifierSample");
  9. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  10. JTextFieldtextField1=newJTextField();
  11. JTextFieldtextField2=newJTextField();
  12. InputVerifierverifier=newInputVerifier(){
  13. publicbooleanverify(JComponentcomp){
  14. booleanreturnValue;
  15. JTextFieldtextField=(JTextField)comp;
  16. try{
  17. Integer.parseInt(textField.getText());
  18. returnValue=true;
  19. }catch(NumberFormatExceptione){
  20. returnValue=false;
  21. }
  22. returnreturnValue;
  23. }
  24. };
  25. textField1.setInputVerifier(verifier);
  26. frame.add(textField1,BorderLayout.NORTH);
  27. frame.add(textField2,BorderLayout.CENTER);
  28. frame.setSize(300,100);
  29. frame.setVisible(true);
  30. }
  31. }

例 3:将文本输入框增加在滚动条面板中
Java代码收藏代码
  1. importjava.awt.BorderLayout;
  2. importjava.awt.event.ActionEvent;
  3. importjava.awt.event.ActionListener;
  4. importjavax.swing.BoundedRangeModel;
  5. importjavax.swing.BoxLayout;
  6. importjavax.swing.JFrame;
  7. importjavax.swing.JPanel;
  8. importjavax.swing.JScrollBar;
  9. importjavax.swing.JTextField;
  10. publicclassTextSlider{
  11. publicstaticvoidmain(Stringargs[]){
  12. JFrameframe=newJFrame("TextSlider");
  13. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  14. finalJTextFieldtextField=newJTextField();
  15. JScrollBarscrollBar=newJScrollBar(JScrollBar.HORIZONTAL);
  16. JPanelpanel=newJPanel();
  17. panel.setLayout(newBoxLayout(panel,BoxLayout.Y_AXIS));
  18. BoundedRangeModelbrm=textField.getHorizontalVisibility();
  19. scrollBar.setModel(brm);
  20. panel.add(textField);
  21. panel.add(scrollBar);
  22. finalTextSliderts=newTextSlider();
  23. textField.addActionListener(newActionListener(){
  24. publicvoidactionPerformed(ActionEvente){
  25. System.out.println("Text:"+textField.getText());
  26. }
  27. });
  28. frame.add(panel,BorderLayout.NORTH);
  29. frame.setSize(300,100);
  30. frame.setVisible(true);
  31. }
  32. }

例 4 :在开发中经常会遇到只能在文本框输入自己想控制的格式,如:只能输入数字,字母等类似需求,这种需求有两种实现方法,一种是在用户提交时判断输入的内容是否符合要求,二种是在用户输入的同时对内容做判断.下面这个例子就是对第二种方式的处理. 通过对模型进行扩展和改变所提供的默认模型,可以很容易创建自定义字段.

只能在文本框中输入数字
Java代码收藏代码
  1. importjava.awt.Container;
  2. importjava.awt.Graphics;
  3. importjava.awt.event.WindowAdapter;
  4. importjava.awt.event.WindowEvent;
  5. importjavax.swing.JFrame;
  6. importjavax.swing.JLabel;
  7. importjavax.swing.JPanel;
  8. importjavax.swing.JTextField;
  9. importjavax.swing.event.DocumentEvent;
  10. importjavax.swing.event.DocumentListener;
  11. importjavax.swing.text.AttributeSet;
  12. importjavax.swing.text.BadLocationException;
  13. importjavax.swing.text.Document;
  14. importjavax.swing.text.PlainDocument;
  15. publicclassValidationTestFrameextendsJFrameimplementsDocumentListener{
  16. JLabellabel=newJLabel("Ionlyacceptnumbers");
  17. privateIntTextFieldintFiled;
  18. publicValidationTestFrame(){
  19. setTitle("ValidationTest");
  20. setSize(300,200);
  21. addWindowListener(newWindowAdapter(){
  22. publicvoidwindowClosing(WindowEvente){
  23. System.exit(0);
  24. }
  25. });
  26. ContainercontentPane=getContentPane();
  27. JPanelp=newJPanel();
  28. intFiled=newIntTextField(12,3);
  29. p.add(intFiled);
  30. //增加DocumentListener事件
  31. intFiled.getDocument().addDocumentListener(this);
  32. contentPane.add(p,"South");
  33. contentPane.add(label,"Center");
  34. }
  35. publicvoidinsertUpdate(DocumentEvente){
  36. setLabel();
  37. }
  38. publicvoidremoveUpdate(DocumentEvente){
  39. setLabel();
  40. }
  41. publicvoidchangedUpdate(DocumentEvente){
  42. }
  43. publicvoidsetLabel(){
  44. if(intFiled.isValid()){
  45. intvalue=intFiled.getValue();
  46. label.setText(Integer.toString(value));
  47. }
  48. }
  49. publicstaticvoidmain(String[]args){
  50. JFrameframe=newValidationTestFrame();
  51. frame.show();
  52. }
  53. }
  54. classIntTextFieldextendsJTextField{
  55. publicIntTextField(intdefval,intsize){
  56. super(""+defval,size);
  57. }
  58. protectedDocumentcreateDefaultModel(){
  59. returnnewIntTextDocument();
  60. }
  61. publicbooleanisValid(){
  62. try{
  63. Integer.parseInt(getText());
  64. returntrue;
  65. }catch(NumberFormatExceptione){
  66. returnfalse;
  67. }
  68. }
  69. publicintgetValue(){
  70. try{
  71. returnInteger.parseInt(getText());
  72. }catch(NumberFormatExceptione){
  73. return0;
  74. }
  75. }
  76. classIntTextDocumentextendsPlainDocument{
  77.   //中写方法实现需求
  78. publicvoidinsertString(intoffs,Stringstr,AttributeSeta)
  79. throwsBadLocationException{
  80. if(str==null)
  81. return;
  82. StringoldString=getText(0,getLength());
  83. StringnewString=oldString.substring(0,offs)+str
  84. +oldString.substring(offs);
  85. try{
  86. Integer.parseInt(newString+"0");
  87. //向Document中插入文本前判断
  88. super.insertString(offs,str,a);
  89. }catch(NumberFormatExceptione){
  90. }
  91. }
  92. }
  93. }
分享到:
评论

相关推荐

    java swing-JTextField的使用

    JTextField是Java Swing库中的一个组件类,用于接收用户的文本输入。

    SWING图形界面开发手册.pdf

    Java 图形界面开发简介 .............. ................................ ................................ ..... 5 1. Swing1. Swing1. Swing 1. Swing1. Swing1. Swing1. Swing简介 ..............................

    Java Swing JTextField 搜索引擎 信息检索(源码)

    实现信息检索功能 像百度的网页搜索框 搜索相关资源并可以选择并显示搜索结果 使用JTable作为搜索结果显示框 在网上找不到相关的资源 自已写了一个 这只是提供一个思路 如果有更好的想法 可以联系我 ...

    Swing组件下载(常用组件)

    Swing组件(javax.swing.-) 面板:JPanel 标签化窗格:JTabbedPane 拆分窗格:JSplitPane 滚动窗格:JScrollPane 工具栏:JToolBar 桌面窗格:JDesktopPane 内部框架:JInternalFrame 分层窗格:JLayeredPane ...

    Java Swing中的文本框(JTextField)与文本区(JTextArea)使用实例

    主要介绍了Java Swing中的文本框(JTextField)与文本区(JTextArea)使用实例,Swing是一个用于开发Java应用程序用户界面的开发工具包,需要的朋友可以参考下

    Swing输入框监听

    //建立监听 FrameListener fl = new FrameListener(jb,tf,pw); //tf.addActionListener(fl); tf.addKeyListener(fl); //窗口可见 this.setVisible(true); //关闭窗口时退出程序 this....

    JTextField限制最大数字.txt

    对JTextField限制只能输入数字,且在0至999范围内

    Java Swing JTextField文本框的代码示例

    主要介绍了Java Swing JTextField文本框的代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Swing组件应用实例

    对JAVA中Swing组件有一个很好的讲解,并通过实际的例子给读者一个清晰的认识和掌握!

    超市管理系统 Java Swing + MySQL JDBC开发

    利用SWING编程实现商品的管理,要求如下: 1、商品管理页面布局,添加一个JScrollPanel(内嵌JTable),用来显示所有商品的信息;添加两个JLabel用于显示查询提示信息;添加JTextField用于输入商品商品名称;添加2个...

    jTextField中关键字加颜色

    i = jTextField1.getText().length(); Highlighter hilite = jTextArea1.getHighlighter();//获取负责进行高亮显示的对象 //Highlighter:一个允许用户用带有颜色的区域标出背景的对象接口 for (f = 0; f (); f++...

    java JTextField组件的使用

    java JTextField组件的使用 java JTextField组件的使用 java JTextField组件的使用

    JTextField添加“自动完成”

    JTextField添加“自动完成”,代码简单强大

    JTextField_Example.java

    JTextField_Example.java

    java JTextField美化Demo

    实现圆角矩形边框,hint文字,主要代码: ... JTextField textField = (JTextField) c; if ("".equals(textField.getText())) { g2d.setColor(Color.BLACK); g2d.drawString("请输入文字...", 10, 18); }

    简单的网页浏览器

    import javax.swing.JTextField; import javax.swing.JToolBar; import javax.swing.JWindow; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.event....

    原创:java封装了的JTextField,可以达到google输入框的效果

    原创:java封装了的JTextField,可以达到google输入框的效果:在输入框中输入一些字符即可联想。

    jisuanqi.rar_jtextfield

     在完成Swing的学习后,练习使用Swing包中JFrame、JButton、JLabel、JTextField、JMenu、JMenuItem等组件完成图形界面绘制。 前期能够独立思考并完成计算器的逻辑代码。 熟练使用JButton、JTextField、JLabel等...

    java实验报告之图形用户界面程序设计与 AWT/Swing组件

    一、实验目的 1.熟悉Java图形用户界面的设计原理和程序结构; 2.能设计符合问题要求的图形用户界面程序; 3.熟悉Java AWT、swing组件的功能; 4.掌握常用组件的事件接口;... private final JTextField textField;

Global site tag (gtag.js) - Google Analytics