Java中的JTextField和JFormattedTextField有什么区别?
JTextField 可用于普通文本,而JFormattedTextField是一个可以扩展JTextField的类,它可以用于为其包含的文本设置任何格式,例如电话号码、电子邮件、日期等。
JTextField
- JTextField是最重要的组件之一,允许用户以单行格式输入文本值。
- 当我们尝试在文本字段中输入一些内容时,JTextField可以生成一个ActionListener接口,并且每次光标(即游标)位置改变时,它可以生成一个CaretListener接口。
- JTextField还可以生成MouseListener和KeyListener接口。
示例
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指定用户可以输入的字符。
- JFormattedTextField是Format类的子类,用于构建格式化文本字段。我们可以创建一个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();
}
}输出
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP