Java Swing How to - Link values for two JFormattedTextField








Question

We would like to know how to link values for two JFormattedTextField.

Answer

import java.awt.GridLayout;
//from ww  w .jav a2 s . co m
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class Main {
  public static void main(String[] args) {
    JPanel mainPanel = new JPanel();
    JTextField field = new JTextField(20);
    JTextField field1 = new JTextField(20);

    field.getDocument().addDocumentListener(new DocumentListener() {
      @Override
      public void changedUpdate(DocumentEvent e) {
        updateLabel(e);
      }
      @Override
      public void insertUpdate(DocumentEvent e) {
        updateLabel(e);
      }
      @Override
      public void removeUpdate(DocumentEvent e) {
        updateLabel(e);
      }

      private void updateLabel(DocumentEvent e) {
            field1.setText(field.getText());
      }
    });

    mainPanel.setLayout(new GridLayout(1, 0, 10, 0));
    mainPanel.add(field);
    mainPanel.add(field1);

    JFrame frame = new JFrame();
    frame.getContentPane().add(mainPanel);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }
}