2014-02-11 3 views
-2

Jformatter не работает, пытаясь форматировать JFormattedTextField1, когда форма загружается (так что пользователь может вводить только номера телефонов в формате). Но это не сработает.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

Что не будет работать !? – bblincoe

+1

«Это не сработает» - это * никогда * достаточная информация. Пожалуйста, прочитайте http://tinyurl.com/so-list –

+0

У кого-нибудь есть идеи? – user3287269

ответ

-1

Хей, сегодня у меня есть догадка день и хотел бы поделиться своим решением с вы, возможно, это соответствует вашим потребностям.

Это простой класс, который инициализирует JFrame и добавляет JPanel, содержащий JFormattedTextField и JButton на нем. Если вы нажмете кнопку, содержимое 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"); 
    } 
} 

Пожалуйста, более подробно описаны в настройке вопрос в следующий раз!

Patrick