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

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 日期控件(目前支持JLable和JTextField,若有需要可自行扩展其它控件)

    在Java Swing中,开发用户界面时常常需要与用户交互,日期选择是常见的需求之一。`JAVA SWING 日期控件` 提供了这样的功能,它主要用于帮助用户在GUI应用程序中选择日期。这篇博客(博文链接:...

    JAVA总结之 简单的SWING界面开发

    这篇“简单的SWING界面开发”总结将帮助我们深入理解如何使用Swing来创建用户友好的桌面应用程序。 首先,Swing是Java Foundation Classes (JFC)的一部分,它是对早期AWT(Abstract Window Toolkit)的增强。Swing...

    利用Java Swing 实现游戏开发.pdf

    本篇文章将重点介绍如何利用Swing的一些核心特性来开发简单的游戏应用。 #### Swing初体验 Swing不仅适合于构建传统的桌面应用程序,也适用于创建具有交互性的游戏。下面我们将通过几个关键的概念来深入了解Swing...

    Java Swing大神必经之路

    第11篇 Java Swing大神必经之路11:JavaSwing_2.6: JTextField(文本框) 本篇文章详细介绍了 JTextField 的使用,包括其继承体系、构造方法和常用方法,幫助讀者更好地理解 JTextField 的使用。 第12篇 Java Swing...

    java实验报告———JavaSwing编程.pdf

    Swing是Java的一个工具包,用于开发Java应用程序的图形用户界面。它提供了一套丰富的组件,可以让开发者创建窗口化的用户界面,其中 JButton, JLabel, JTextField 是Swing库中常用的组件。 描述中的“Java实验报告...

    Java Swing图形界面

    本篇将深入探讨Java Swing的核心概念、关键组件以及实际开发中的应用。 一、Swing基础 1. 组件体系:Swing组件基于Java AWT(Abstract Window Toolkit)之上,但比AWT更加轻量级,因为它使用了Java的事件模型和...

    Java swing图形界面开发与案例详解_代码

    本篇将深入讲解Java Swing的核心概念、关键组件、布局管理以及实际案例。 一、Swing组件基础 1. JComponent:所有Swing组件的基类,继承自AWT的Component类,增加了更多的特性和功能。 2. JFrame:作为顶级容器,...

    j2ee的应用-swing组件介绍

    本篇文章将深入探讨Swing组件的基本知识,以及如何利用它们在J2EE开发中创建简单游戏和应用程序。 首先,Swing组件库包含了各种控件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、面板(JPanel)、...

    SwingHacks学习笔记(2)-----自定义JLabel,JButton

    在Java的图形用户界面(GUI)开发中,Swing库是一个重要的组件,它提供了一系列的类和接口,用于创建复杂的窗口应用程序。这篇“SwingHacks学习笔记(2)-----自定义JLabel,JButton”博客文章深入探讨了如何利用Swing...

    java swing 工具箱

    本篇将深入探讨Java Swing工具箱中的关键概念和技术。 首先,Swing 提供了大量组件(JComponents),这些组件用于构建用户界面,例如按钮(JButton)、文本框(JTextField)、列表(JList)、表格(JTable)和面板...

    Swing学习系列 -- Swing读书笔记目录

    这篇Swing读书笔记目录旨在帮助开发者更好地理解和掌握Swing的相关知识,通过阅读和学习,可以提升在Java GUI编程上的技能。 首先,Swing是Java Foundation Classes (JFC)的一部分,它是Sun Microsystems为Java平台...

    Swing全部组建应用实例

    本篇将深入讲解Swing的全部组建及其应用实例,包括事件处理和布局管理。 1. **组件(Components)**:Swing提供了一系列组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、面板(JPanel)、滚动面板...

    java swing深入学习例子

    Java Swing 是Java GUI(图形用户界面)开发的一个重要库,它是Java AWT(Abstract Window Toolkit)的扩展,提供了更为丰富的组件和更灵活的设计能力。在深入学习Java Swing的过程中,我们通常会经历初级、中级、...

    swing版按键控制台

    【Swing版按键控制台】是一个基于Java Swing库开发的用户界面组件,它允许开发者创建一个模拟控制台,用户可以通过键盘输入来与程序交互。在Java编程中,Swing是用于构建图形用户界面(GUI)的工具包,它是Java ...

    swing的两个资料

    1. **理解Swing组件**:包括JButton、JLabel、JTextField、JPanel、JFrame等,了解它们的功能和用法,以及如何添加事件监听器来响应用户交互。 2. **布局管理**:Swing提供了多种布局管理器,如FlowLayout、...

    java swing

    本篇文章将深入探讨Java Swing的核心概念、组件、布局管理和事件处理,帮助初学者快速上手。 一、Swing组件 Java Swing提供了多种组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、滚动面板...

    javaswing详解

    本篇文章将深入讲解Java Swing的基础知识、核心组件、事件处理以及实际案例应用。 一、Java Swing基础知识 1. 轻量级与重量级组件:Swing组件是轻量级的,基于Java的AWT(Abstract Window Toolkit)组件,比AWT...

    shujuku.rar_javase管理系统_swing access_swing 学生管理_swing系统_管理系统swing

    本篇文章将详细探讨一个利用JavaSE Swing库开发的学生管理系统,该系统结合了Swing和Access数据库,为学习者提供了一个功能完备、易于上手的实践案例。 首先,JavaSE(标准版)是Java编程语言的核心部分,适用于...

    Java Swing'组件集合

    本篇文章将深入探讨Java Swing组件集合,帮助初学者更好地理解和使用这些组件。 首先,Swing 提供了丰富的组件集,包括按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框(JCheckBox)、单选按钮...

    对Swing的一点理解(一)

    - Swing提供了一系列组件,如JButton(按钮)、JLabel(标签)、JTextField(文本字段)、JTextArea(文本区域)、JFrame(窗口)、JPanel(面板)等,这些组件构成了用户界面的基本元素。 - 每个组件都有丰富的...

Global site tag (gtag.js) - Google Analytics