Java中的JTextField和JFormattedTextField有什么区别?


JTextField 可用于普通文本,而JFormattedTextField是一个可以扩展JTextField的类,它可以用于为其包含的文本设置任何格式,例如电话号码、电子邮件、日期等。

JTextField

  • JTextField是最重要的组件之一,允许用户以单行格式输入文本值。
  • 当我们尝试在文本字段中输入一些内容时,JTextField可以生成一个ActionListener接口,并且每次光标(即游标)位置改变时,它可以生成一个CaretListener接口。
  • JTextField还可以生成MouseListenerKeyListener接口。

示例

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JTextFieldTest extends JFrame {
   JTextField jtf;
   public JTextFieldTest() {
      setTitle("JTextField Test");
      setLayout(new FlowLayout());
      jtf = new JTextField(15);
      add(jtf);
      jtf.addActionListener(new ActionListener() {
         public void actionPerformed (ActionEvent ae) {
            System.out.println("Event generated: " + jtf.getText());
         }
      });
      setSize(375, 250);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String args[]) {
      new JTextFieldTest();
   }
}

输出

JFormattedTextField

  • 格式化文本字段是JFormattedTextField类的实例,它是JTextField的直接子类。
  • JFormattedTextField就像一个普通的文本字段,只不过它控制用户输入字符的有效性,并且可以与一个formatter关联,该formatter指定用户可以输入的字符。
  • JFormattedTextFieldFormat类的子类,用于构建格式化文本字段。我们可以创建一个formatter,必要时对其进行自定义。我们可以调用带Format类型参数的JFormattedTextField(Format format)构造函数。
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class JFormattedTextFieldTest extends JFrame {
   JFormattedTextField jftf;
   MaskFormatter mf;
   public JFormattedTextFieldTest() {
      setTitle("JFormattedTextField Test");
      setLayout(new FlowLayout());
      // A phone number formatter - (country code)-(area code)-(number)
      try {
         mf = new MaskFormatter("##-###-#######");
         mf.setPlaceholderCharacter('#');
         jftf = new JFormattedTextField(mf);
         jftf.setColumns(12);
      } catch(Exception e) {
         e.printStackTrace();
      }
      add(jftf);
      setSize(375, 250);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setVisible(true);
   }
   public static void main(String args[]) {
      new JFormattedTextFieldTest();
   }
}

输出


更新于:2020年2月10日

1K+ 浏览量

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.