JFormatter不起作用 - * JFormattedTextField1 *不会格式化

时间:2014-02-11 17:09:55

标签: java swing jformattedtextfield

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");
}

1 个答案:

答案 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");
    }
}

请在下次设置问题时详细说明!

帕特里克