package chapter11;

/**
 * Title:        Chapter 11, "Creating User Interfaces"
 * Description:  Examples for Chapter 11
 * Copyright:    Copyright (c) 2000
 * Company:      Armstrong Atlantic State University
 * @author Y. Daniel Liang
 * @version 1.0
 */

// TextFieldDemo.java: Add two numbers in the text fields
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TextFieldDemo extends JFrame implements ActionListener
{
  // Declare three text fields
  private JTextField jtfNum1, jtfNum2, jtfResult;
  private JButton jbtAdd; // Declare "Add" button

  /**Main method*/
  public static void main(String[] args)
  {
    TextFieldDemo frame = new TextFieldDemo();
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
  }

  /**Default constructor*/
  public TextFieldDemo()
  {
    setTitle("TextFieldDemo");
    setBackground(Color.yellow);
    setForeground(Color.black);

    // Use panel p1 to group text fields
    JPanel p1 = new JPanel();
    p1.setLayout(new FlowLayout());
    p1.add(new JLabel("Number 1"));
    p1.add(jtfNum1 = new JTextField(3));
    p1.add(new JLabel("Number 2"));
    p1.add(jtfNum2 = new JTextField(3));
    p1.add(new JLabel("Result"));
    p1.add(jtfResult = new JTextField(4));
    jtfResult.setEditable(false);   // Set jtfResult noneditable

    // Use panel p2 for the button
    JPanel p2 = new JPanel();
    p2.setLayout(new FlowLayout());
    p2.add(jbtAdd = new JButton("Add"));

    // Set FlowLayout for the frame and add panels to the frame
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(p1, BorderLayout.CENTER);
    getContentPane().add(p2, BorderLayout.SOUTH);

    // Register listener
    jbtAdd.addActionListener(this);
  }

  /**Handle the add operation*/
  public void actionPerformed(ActionEvent e)
  {
    if (e.getSource() == jbtAdd)
    {
      // Get int values from text fields and use trim() to
      // trim extraneous space in the text field
      int num1 = (Integer.parseInt(jtfNum1.getText().trim()));
      int num2 = (Integer.parseInt(jtfNum2.getText().trim()));
      int result = num1 + num2;

      // Set result in TextField jtfResult
      jtfResult.setText(String.valueOf(result));
    }
  }
}