Jformatter不起作用,在表单加载时尝试格式化JFormattedTextField1
(因此用户只能输入格式的电话号码)。但那不行。
不起作用=表单根本不做任何事情,JFormattedTextField1
只是保持未修改
代码:
public class NewJFrame extends javax.swing.JFrame {
/**
* Creates new form NewJFrame
*/
public NewJFrame(){
initComponents();
formattedTextField();
}
public void formattedTextField()
{ MaskFormatter formatter;
formatter = new MaskFormatter("###'-##'-####");
jFormattedTextField1 = new JFormattedTextField(formatter);
jFormattedTextField1.setValue("123-45-6789");
}
答案 0 :(得分:-1)
Hej,今天我有一个猜测日,想和你分享我的解决方案,也许它符合你的需求。
这是一个简单的类,它初始化一个JFrame并添加一个包含JFormattedTextField和JButton的JPanel。如果单击“按钮”,则会在控制台上打印出TextField的内容。如果输入不匹配,则控制台上会显示错误。
package com.example;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.text.MaskFormatter;
public class MainFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 4159266806348540020L;
private JFormattedTextField tf;
private JButton clickBtn;
public MainFrame(final String title) {
initGUI(title);
}
private void initGUI(String title) {
this.setTitle(title);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
final MaskFormatter formatter = new MaskFormatter("###-##-####");
tf = new JFormattedTextField(formatter);
JPanel panel = new JPanel(new BorderLayout());
panel.add(tf, BorderLayout.NORTH);
clickBtn = new JButton("Click me!");
clickBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!tf.getText().matches(formatter.getMask())) {
System.err.println("Your Input does not match the pattern!");
} else {
System.out.println(tf.getText());
}
}
});
panel.add(clickBtn, BorderLayout.SOUTH);
this.getContentPane().add(panel, BorderLayout.CENTER);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.setSize(800, 600);
this.setVisible(true);
}
}
起点
package com.example;
public class DemoApp {
public static void main(String[] args) {
new MainFrame("FormattedTextField Demo");
}
}
请在下次设置问题时详细说明!
帕特里克