Java Swing How to - Change horizontal alignment of text field at runtime








Question

We would like to know how to change horizontal alignment of text field at runtime.

Answer

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/*from w w w .  ja  va  2  s  .  c o  m*/
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Main {

  public static void main(String[] args) {

    final JTextField tf = new JTextField("press <enter>", 20);
    tf.setHorizontalAlignment(JTextField.RIGHT);

    tf.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        int old = tf.getHorizontalAlignment();
        if (old == JTextField.LEFT)
          tf.setHorizontalAlignment(JTextField.RIGHT);
        if (old == JTextField.RIGHT)
          tf.setHorizontalAlignment(JTextField.CENTER);
        if (old == JTextField.CENTER)
          tf.setHorizontalAlignment(JTextField.LEFT);
      }
    });

    JFrame frame = new JFrame("JTextFieldExample");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(new java.awt.FlowLayout());
    frame.getContentPane().add(tf);
    frame.setSize(275, 75);
    frame.setVisible(true);
    tf.requestFocus();
  }
}