JTEXTFIELD

2024-02-08 22:58
文章标签 jtextfield

本文主要是介绍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. import javax.swing.BoxLayout;   
  2. import javax.swing.JFrame;   
  3. import javax.swing.JScrollPane;   
  4. import javax.swing.JTextArea;   
  5. import javax.swing.JTextField;   
  6. import javax.swing.text.Document;   
  7. public class ShareModel {   
  8.   public static void main(String args[]) {   
  9.     JFrame frame = new JFrame("Sharing Sample");   
  10.     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  11.     JTextField textarea1 = new JTextField();   
  12.     Document document = textarea1.getDocument();   
  13.     JTextArea textarea2 = new JTextArea(document);   
  14.     JTextArea textarea3 = new JTextArea(document);   
  15.     frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));   
  16.     frame.add(new JScrollPane(textarea1));   
  17.     frame.add(new JScrollPane(textarea2));   
  18.     frame.add(new JScrollPane(textarea3));   
  19.     frame.setSize(300400);   
  20.     frame.setVisible(true);   
  21.   }   
  22. }  
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.text.Document;
public class ShareModel {
public static void main(String args[]) {
JFrame frame = new JFrame("Sharing Sample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textarea1 = new JTextField();
Document document = textarea1.getDocument();
JTextArea textarea2 = new JTextArea(document);
JTextArea textarea3 = new JTextArea(document);
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
frame.add(new JScrollPane(textarea1));
frame.add(new JScrollPane(textarea2));
frame.add(new JScrollPane(textarea3));
frame.setSize(300, 400);
frame.setVisible(true);
}
}


例 2 : 验证文本框,如果第一个文本框中为输入数字则第二个文本框不能输入。

Java代码 复制代码
  1. import java.awt.BorderLayout;   
  2. import javax.swing.InputVerifier;   
  3. import javax.swing.JComponent;   
  4. import javax.swing.JFrame;   
  5. import javax.swing.JTextField;   
  6. public class VerifierSample {   
  7.   public static void main(String args[]) {   
  8.     JFrame frame = new JFrame("Verifier Sample");   
  9.     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  10.     JTextField textField1 = new JTextField();   
  11.     JTextField textField2 = new JTextField();   
  12.     InputVerifier verifier = new InputVerifier() {   
  13.       public boolean verify(JComponent comp) {   
  14.         boolean returnValue;   
  15.         JTextField textField = (JTextField) comp;   
  16.         try {   
  17.           Integer.parseInt(textField.getText());   
  18.           returnValue = true;   
  19.         } catch (NumberFormatException e) {   
  20.           returnValue = false;   
  21.         }   
  22.         return returnValue;   
  23.       }   
  24.     };   
  25.     textField1.setInputVerifier(verifier);   
  26.     frame.add(textField1, BorderLayout.NORTH);   
  27.     frame.add(textField2, BorderLayout.CENTER);   
  28.     frame.setSize(300100);   
  29.     frame.setVisible(true);   
  30.   }   
  31. }  
import java.awt.BorderLayout;
import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class VerifierSample {
public static void main(String args[]) {
JFrame frame = new JFrame("Verifier Sample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField1 = new JTextField();
JTextField textField2 = new JTextField();
InputVerifier verifier = new InputVerifier() {
public boolean verify(JComponent comp) {
boolean returnValue;
JTextField textField = (JTextField) comp;
try {
Integer.parseInt(textField.getText());
returnValue = true;
} catch (NumberFormatException e) {
returnValue = false;
}
return returnValue;
}
};
textField1.setInputVerifier(verifier);
frame.add(textField1, BorderLayout.NORTH);
frame.add(textField2, BorderLayout.CENTER);
frame.setSize(300, 100);
frame.setVisible(true);
}
}


例 3:将文本输入框增加在滚动条面板中

Java代码 复制代码
  1. import java.awt.BorderLayout;   
  2. import java.awt.event.ActionEvent;   
  3. import java.awt.event.ActionListener;   
  4.   
  5. import javax.swing.BoundedRangeModel;   
  6. import javax.swing.BoxLayout;   
  7. import javax.swing.JFrame;   
  8. import javax.swing.JPanel;   
  9. import javax.swing.JScrollBar;   
  10. import javax.swing.JTextField;   
  11.   
  12. public class TextSlider {   
  13.   
  14.   public static void main(String args[]) {   
  15.     JFrame frame = new JFrame("Text Slider");   
  16.     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  17.   
  18.     final JTextField textField = new JTextField();   
  19.   
  20.     JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);   
  21.   
  22.     JPanel panel = new JPanel();   
  23.     panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));   
  24.   
  25.     BoundedRangeModel brm = textField.getHorizontalVisibility();   
  26.     scrollBar.setModel(brm);   
  27.     panel.add(textField);   
  28.     panel.add(scrollBar);   
  29.   
  30.     final TextSlider ts = new TextSlider();   
  31.     textField.addActionListener(new ActionListener() {   
  32.       public void actionPerformed(ActionEvent e) {   
  33.         System.out.println("Text: " + textField.getText());   
  34.       }   
  35.     });   
  36.     frame.add(panel, BorderLayout.NORTH);   
  37.     frame.setSize(300100);   
  38.     frame.setVisible(true);   
  39.   }   
  40. }  
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoundedRangeModel;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JTextField;
public class TextSlider {
public static void main(String args[]) {
JFrame frame = new JFrame("Text Slider");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextField textField = new JTextField();
JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
BoundedRangeModel brm = textField.getHorizontalVisibility();
scrollBar.setModel(brm);
panel.add(textField);
panel.add(scrollBar);
final TextSlider ts = new TextSlider();
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Text: " + textField.getText());
}
});
frame.add(panel, BorderLayout.NORTH);
frame.setSize(300, 100);
frame.setVisible(true);
}
}


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

只能在文本框中输入数字

Java代码 复制代码
  1. import java.awt.Container;   
  2. import java.awt.Graphics;   
  3. import java.awt.event.WindowAdapter;   
  4. import java.awt.event.WindowEvent;   
  5.   
  6. import javax.swing.JFrame;   
  7. import javax.swing.JLabel;   
  8. import javax.swing.JPanel;   
  9. import javax.swing.JTextField;   
  10. import javax.swing.event.DocumentEvent;   
  11. import javax.swing.event.DocumentListener;   
  12. import javax.swing.text.AttributeSet;   
  13. import javax.swing.text.BadLocationException;   
  14. import javax.swing.text.Document;   
  15. import javax.swing.text.PlainDocument;   
  16.   
  17. public class ValidationTestFrame extends JFrame implements DocumentListener {   
  18.   JLabel label = new JLabel("I only accept numbers");   
  19.   private IntTextField intFiled;   
  20.   
  21.   public ValidationTestFrame() {   
  22.     setTitle("ValidationTest");   
  23.     setSize(300200);   
  24.     addWindowListener(new WindowAdapter() {   
  25.       public void windowClosing(WindowEvent e) {   
  26.         System.exit(0);   
  27.       }   
  28.     });   
  29.   
  30.     Container contentPane = getContentPane();   
  31.   
  32.     JPanel p = new JPanel();   
  33.     intFiled = new IntTextField(123);   
  34.     p.add(intFiled);   
  35.   
  36.     //增加DocumentListener事件   
  37.     intFiled.getDocument().addDocumentListener(this);   
  38.   
  39.     contentPane.add(p, "South");   
  40.     contentPane.add(label, "Center");   
  41.   }   
  42.   
  43.   public void insertUpdate(DocumentEvent e) {   
  44.     setLabel();   
  45.   }   
  46.   
  47.   public void removeUpdate(DocumentEvent e) {   
  48.     setLabel();   
  49.   }   
  50.   
  51.   public void changedUpdate(DocumentEvent e) {   
  52.   }   
  53.   
  54.   public void setLabel() {   
  55.     if (intFiled.isValid() ) {   
  56.       int value = intFiled.getValue();   
  57.       label.setText(Integer.toString(value));   
  58.     }   
  59.   }   
  60.   
  61.   public static void main(String[] args) {   
  62.     JFrame frame = new ValidationTestFrame();   
  63.     frame.show();   
  64.   }   
  65.   
  66. }   
  67.   
  68. class IntTextField extends JTextField {   
  69.   public IntTextField(int defval, int size) {   
  70.     super("" + defval, size);   
  71.   }   
  72.   
  73.   protected Document createDefaultModel() {   
  74.     return new IntTextDocument();   
  75.   }   
  76.   
  77.   public boolean isValid() {   
  78.     try {   
  79.       Integer.parseInt(getText());   
  80.       return true;   
  81.     } catch (NumberFormatException e) {   
  82.       return false;   
  83.     }   
  84.   }   
  85.   
  86.   public int getValue() {   
  87.     try {   
  88.       return Integer.parseInt(getText());   
  89.     } catch (NumberFormatException e) {   
  90.       return 0;   
  91.     }   
  92.   }   
  93.   class IntTextDocument extends PlainDocument {   
  94.   
  95.   //中写方法实现需求   
  96.     public void insertString(int offs, String str, AttributeSet a)   
  97.         throws BadLocationException {   
  98.       if (str == null)   
  99.         return;   
  100.       String oldString = getText(0, getLength());   
  101.       String newString = oldString.substring(0, offs) + str   
  102.           + oldString.substring(offs);   
  103.       try {   
  104.         Integer.parseInt(newString + "0");   
  105.        
  106.         //向Document中插入文本前判断   
  107.         super.insertString(offs, str, a);   
  108.       } catch (NumberFormatException e) {   
  109.       }   
  110.     }   
  111.   }   
  112.   

这篇关于JTEXTFIELD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/692451

相关文章

让JTextField添加“自动完成”功能

在越来越重视“用户体验”的今天,一个简单的文本框也变得越来越智能了。比如Google的搜索,当我们输入搜索关键字的过程中,文本框就会动态地下拉列出最常输入的近似文字,以便我们快速输入要查询的内容。当然一直抄袭Google的百度自然也是一样。类似的例子还有很多,例如一般的邮件客户端,在输入地址时,也会动态列出符合要求的地址,方便快速录入,也会减少出错。 那么,Swing的文本框要做到这一点是否容易

Java笔记之JTextField JTextArea区别

一、单行文本输入框(JTextField)   在许多情况下,用户可能还需要输入一些文字,这时就需要用到文本输入框。单行文本输入框是由 JTextField 类实现的。它的构造函数如下:   (1) JTextField() 构造一个新的单行文本输入框。   (2) JTextField(int length) 构造一个指定长度的单行文本输入框。   (3)

文本框控件JTextField和JTextArea的使用

-----------------siwuxie095                      工程名:TestUI 包名:com.siwuxie095.ui 类名:TestTextFieldAndTextArea.java       工程结构目录如下:                   在 Design 的根面板 contentPane 的上中下