2012-11-30 5 views
5

Sono nuovo nello sviluppo di Swing Java. Qualcuno può aiutarmi su questo.Swing - MaskFormatter - Immettere i numeri da destra del campo di testo

Ho un campo di testo jformatted con maskformatter. funziona bene Ma l'unica cosa che vorrei sapere è se possiamo farlo per inserire i numeri da destra. Il codice seguente funziona bene per inserire i numeri da sinistra a destra.

Grazie per il vostro tempo.

Ecco il codice Java che ho:

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

Hai provato il [ 'setComponentOrientation (ComponentOrientation o)'] (http://docs.oracle .com/javase/1.4.2/docs/api/javax/swing/JSpinner.html) metodo? – 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

Grazie Brian e fireshadow52. Funziona bene. Ma vedo un piccolo problema. La posizione del cursore è un po 'confusa. Mi aspetto di vedere la posizione del punto di riferimento alla fine di tutto il tempo. Invece mostra all'inizio. Inoltre ho osservato che il formato numerico dopo aver inserito 3 cifre 149 (mi aspetto di vederlo come 1:49 ma invece lo mostra come 14: 9) – Steve

risposta

4

si potrebbe usare:

timeField.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
+0

Grazie a Reimeus. Funziona bene. Ma vedo un piccolo problema. La posizione del cursore è un po 'confusa. Mi aspetto di vedere la posizione del punto di riferimento alla fine di tutto il tempo. Invece mostra all'inizio. Inoltre ho osservato che il formato numerico dopo aver inserito 3 cifre 149 (mi aspetto di vederlo come 1:49 ma invece lo mostra come 14: 9) – Steve

+0

Questo è il comportamento predefinito di 'JFormattedTextField'. Potresti dare un'occhiata a [setCaretPosition] (http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#setCaretPosition%28int%29) all'interno di un nuovo [ DocumentListener] (http://docs.oracle.com/javase/7/docs/api/javax/swing/event/DocumentListener.html) registrato con il componente. – Reimeus