2012-11-30 18 views
5

Ich bin neu in Swing Java-Entwicklung. Kann mir jemand dabei helfen?Swing - MaskFormatter - Zahlen von der rechten Seite des Textfelds eingeben

Ich habe ein jformattedtextfield mit Maskenformatierung. es funktioniert gut. Aber ich möchte nur wissen, ob wir es schaffen können, die Zahlen von rechts einzugeben. Der folgende Code funktioniert gut, um die Zahlen von links nach rechts einzugeben.

Vielen Dank für Ihre Zeit.

Hier ist die Java-Code ich habe:

public class MaskFormattedTextExample extends JFrame { 

    private static final long serialVersionUID = -1212313123; 

    JFormattedTextField timeField; 

    public MaskFormattedTextExample() { 
     initComponents(); 
    } 

    private void initComponents() { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(new Dimension(200, 200)); 
     getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT)); 

     MaskFormatter mask = null; 
     try { 
      mask = new MaskFormatter("##:##:##"); 
      mask.setPlaceholderCharacter('_'); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     timeField = new JFormattedTextField(mask); 
     timeField.setHorizontalAlignment(JTextField.RIGHT); 
     timeField.setCaretPosition(JTextField.RIGHT); 

     getContentPane().add(timeField); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      public void run() { 
       new MaskFormattedTextExample().setVisible(true); 
      } 
     }); 
    } 
} 
+0

Haben Sie die versucht, [ 'setComponentOrientation (ComponentOrientation o)'] (http://docs.oracle .com/javase/1.4.2/docs/api/javax/swing/JSpinner.html) Methode? – fireshadow52

+0

['Component.setComponentOrientation (ComponentOrientation)'] (http://docs.oracle.com/javase/6/docs/api/java/awt/Component.html#setComponentOrientation%28java.awt.ComponentOrientation%29) FTFY @ fireshadow52 :) – Brian

+0

Danke Brian und feuershadow52. Es funktioniert gut. Aber ich sehe ein kleines Problem. Die Caret-Position ist ein wenig verwirrend. Ich erwarte die Caret-Position am Ende immer zu sehen. Stattdessen zeigt es am Anfang. Auch habe ich beobachtet, dass das Zahlenformat, nachdem ich 3 Ziffern 149 eingegeben habe (ich erwarte, dass als 1:49 zu sehen, aber stattdessen es es als 14: 9 zeige) – Steve

Antwort

4

Sie verwenden:

timeField.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
+0

Danke Reimeus. Es funktioniert gut. Aber ich sehe ein kleines Problem. Die Caret-Position ist ein wenig verwirrend. Ich erwarte die Caret-Position am Ende immer zu sehen. Stattdessen zeigt es am Anfang. Auch habe ich beobachtet, dass das Zahlenformat nach der Eingabe von 3 Ziffern 149 (ich erwarte, dass als 1:49 zu sehen, aber stattdessen es als 14: 9) – Steve

+0

Dies ist das Standardverhalten von 'JFormattedTextField'. Sie könnten einen Aufruf von [setCaretPosition] (http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#setCaretPosition%28int%29) von innerhalb eines neuen [ DocumentListener] (http://docs.oracle.com/javase/7/docs/api/javax/swing/event/DocumentListener.html) mit der Komponente registriert. – Reimeus

Verwandte Themen