2010-11-23 6 views
11

Ich habe eine JFormattedTextField, die ich verwende, um Einträge eines Datums und einer Uhrzeit zu beschränken. Ich möchte jedoch eine MaskFormatter verwenden, um die Platzhalterzeichen anzuzeigen. Gibt es eine Möglichkeit, eine MaskFormatter oben auf der JFormattedTextField zu verwenden, wenn das Textfeld bereits eine SimpleDateFormat verwendet?JFormattedTextField mit MaskFormatter

Danke, Jeff

Antwort

27
public class MaskFormatterTest { 
    private static final DateFormat df = new SimpleDateFormat("yyyy/mm/dd"); 


    public static void main(String[] args) { 
     JFrame frame = new JFrame(""); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel = new JPanel(); 

     JFormattedTextField tf = new JFormattedTextField(df); 
     tf.setColumns(20); 
     panel.add(tf); 
     try { 
      MaskFormatter dateMask = new MaskFormatter("####/##/##"); 
      dateMask.install(tf); 
     } catch (ParseException ex) { 
      Logger.getLogger(MaskFormatterTest.class.getName()).log(Level.SEVERE, null, ex); 
     } 

     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

alt text

Wenn ich die Frage bin Missverständnis.

+0

nachdem wir dies getan haben können wir das Textfeld nicht bearbeiten !!! Wie behebt man das? –

2

Alternativ betrachten ein InputVerifier, wie example in InputVerificationDemo und diese aufwändigere vorgeschlagen.

+0

Danke. Ich denke @ I82Much's Antwort ist einfacher, aber dies wird auch in anderen Situationen nützlich sein, anstatt benutzerdefinierte Fokus-Listener zu schreiben. –

+0

Ich stimme zu! Mein Beispiel ist ein wenig verschachtelt, aber praktisch für mehrere erlaubte Datumsformate. +1 bis @ I82Mehr übrigens. – trashgod

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. – Cyclonecode

-2
JFormattedTextField tft3 = 
    new JFormattedTextField(new SimpleDateFormat("yyyy-MM-dd")); 
    tft3.setValue(new Date()); 

    Date date = (Date) tft3.getValue(); 
+1

Dies verwendet kein maskiertes Eingabefeld –

Verwandte Themen