JTextArea, JTextField(イベント処理)

import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.event.*;
import java.awt.event.*;

public class Test {
	public static void main (String[] args)
	{
		Win win = new Win("Test Window", "Test Data");
	}
}

/*******************/
/* クラスWinの定義 */
/*******************/
class Win extends JFrame implements ActionListener, DocumentListener {

	JTextField tx1, tx2;
	JTextArea ta;
	Document dc;

	/******************/
	/* コンストラクタ */
	/******************/
	Win (String name, String data)
	{
					// Frameクラスのコンストラクタ(Windowのタイトルを引き渡す)
		super(name);
					// レイアウトの変更(行,列,水平ギャップ,垂直ギャップ)
		Container cp = getContentPane();
		cp.setLayout(new GridLayout(2, 1, 5, 10));
		Font f = new Font("MS 明朝", Font.PLAIN, 20);
					// 上のパネル
						// パネルの追加
		JPanel pn1 = new JPanel();
		pn1.setLayout(new GridLayout(2, 1, 5, 10));
		cp.add(pn1);
						// テキストフィールドの追加
		tx1 = new JTextField();
		tx1.setFont(f);
		tx1.addActionListener(this);
		pn1.add(tx1);

		tx2 = new JTextField();
		tx2.setFont(f);
		pn1.add(tx2);
					// 下のパネル
						// パネルの追加
		JPanel pn2 = new JPanel();
		cp.add(pn2);
						// テキストエリアの追加
		ta = new JTextArea(4, 25);
		ta.setFont(f);
		dc = ta.getDocument();
		dc.addDocumentListener(this);
		JScrollPane scroll = new JScrollPane(ta);
		pn2.add(scroll);
					// Windowの大きさ
		setSize(350, 300);
					// ウィンドウを表示
		setVisible(true);
					// イベントアダプタ
		addWindowListener(new WinEnd());
	}

	/******************************/
	/* 上,左,下,右の余白の設定 */
	/******************************/
	public Insets getInsets()
	{
		return new Insets(35, 10, 10, 10);
	}

	/********************************/
	/* 改行キーが押されたときの処理 */
	/********************************/
	public void actionPerformed(ActionEvent e)
	{
		String str;
		if (e.getSource() == tx1) {
			str = tx1.getText();
			ta.append(str + "\n");
		}
	}

	/****************************************/
	/* TextAreaの内容が変更されたときの処理 */
	/****************************************/
					// 文字の挿入
	public void insertUpdate(DocumentEvent e)
	{
		Document d = e.getDocument();
		if (d == dc) {
			tx2.setText("文字が挿入されました");
		}
	}
					// 文字の削除
	public void removeUpdate(DocumentEvent e)
	{
		Document d = e.getDocument();
		if (d == dc) {
			tx2.setText("文字が削除されました");
		}
	}
					// 文字以外の変更(フォーマットの変更等)
	public void changedUpdate(DocumentEvent e) {}

	/************/
	/* 終了処理 */
	/************/
	class WinEnd extends WindowAdapter
	{
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
	}
}