将JFormattedTextField允许我们创建一个文本字段,可以接受一个格式化的输入。在此示例中,我们创建了两个格式化的文本字段,它们接受有效的号码和日期。
package org.nhooo.example.swing; import javax.swing.JFormattedTextField; import javax.swing.JFrame; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; import javax.swing.text.DateFormatter; import javax.swing.text.MaskFormatter; import java.awt.Dimension; import java.awt.FlowLayout; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class FormattedTextFieldExample extends JFrame { public FormattedTextFieldExample() { initComponents(); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new FormattedTextFieldExample().setVisible(true)); } private void initComponents() { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setSize(new Dimension(200, 200)); getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT)); MaskFormatter mask = null; try { // 创建一个MaskFormatter接受号码,#符号接受 //只有一个数字。我们也可以使用占位符设置空值 // 字符。 mask = new MaskFormatter("(###) ###-####"); mask.setPlaceholderCharacter('_'); } catch (ParseException e) { e.printStackTrace(); } // 创建一个接受有效号码的格式化文本字段。 JFormattedTextField phoneField = new JFormattedTextField(mask); phoneField.setPreferredSize(new Dimension(100, 20)); //在这里,我们创建一个接受日期值的格式化文本字段。我们 // 创建SimpleDateFormat的实例并使用它创建一个 // DateFormatter实例,该实例将传递给JFormattedTextField。 DateFormat format = new SimpleDateFormat("dd-MMMM-yyyy"); DateFormatter df = new DateFormatter(format); JFormattedTextField dateField = new JFormattedTextField(df); dateField.setPreferredSize(new Dimension(100, 20)); dateField.setValue(new Date()); getContentPane().add(phoneField); getContentPane().add(dateField); } }
这是可以在MaskFormatter类上使用的其他一些字符。
字符 | 描述 |
---|---|
# | 数字 |
? | 字母 |
A | 数字或字母 |
* | 任意 |
L | 对于字母,它将转换为等效的小写 |
U | 对于字母,它将转换为等效的大写字母 |
H | 对于十六进制值 |
‘ | 转义另一个掩码字符 |