CS335
Fall, 2008
Homework 4 (20 points)
Due: October 2, 2008 (Thursday)

************************************************************************

1. (10 pts)
Write a java program to design an interface as follows.
User inputs a number in the first text field and a second number
in the second text field and then click the "=" button to get
the sum of the input two numbers in the third text field.





2. (10 pts)
Modify the following java code to make TextFieldHandler an anonymous inner
class in the TextFieldTest class (see the modified "J_Button" class
on page 19 of the notes "Java VII: GUI & Swing I").



/////////////////////////////////////////////////////
// File: TextFieldTest.java
/////////////////////////////////////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JOptionPane;

// inner class for event handling
class TextFieldHandler implements ActionListener
{
    public void actionPerformed( ActionEvent e )
    {
        String s = "";
        TextFieldTest tt = new TextFieldTest();

        if ( e.getSource() == tt.text1 )
            s = "text1: " + e.getActionCommand();
        else if ( e.getSource() == tt.text2 )
            s = "text2: " + e.getActionCommand();
        else if ( e.getSource() == tt.text3 )
            s = "text3: " + e.getActionCommand();
        else if ( e.getSource() == tt.password ) {
            JPasswordField pwd = (JPasswordField) e.getSource();
            s = "password: " + new String( pwd.getPassword() );
            }

    JOptionPane.showMessageDialog( null, s );
    }
}

public class TextFieldTest extends JFrame
{
//    private JTextField text1, text2, text3;
//    private JPasswordField password;
    JTextField text1, text2, text3;
    JPasswordField password;

    public TextFieldTest( ) {
        super( "Testing JTextField and JPasswordField" );
        Container c = getContentPane( );
        c.setLayout( new FlowLayout( ) );

        // construct textfield with default sizing
        text1 = new JTextField( 10 );
        c.add( text1 );

        // construct textfield with default text
        text2 = new JTextField( "Enter text here" );
        c.add( text2 );

        // construct textfield with default text and 20
        // visible elements and no event handler
        text3 = new JTextField( "Uneditable text field", 20 );
        text3.setEditable( false );
        c.add( text3 );

        // construct textfield with default text
        password = new JPasswordField( "Hidden text" );
        c.add( password );

        TextFieldHandler handler = new TextFieldHandler();
        text1.addActionListener( handler );
        text2.addActionListener( handler );
        text3.addActionListener( handler );
        password.addActionListener( handler );

        setSize( 325, 100 );
        show( );
    }

    public static void main( String args[] )
    {
        TextFieldTest app = new TextFieldTest();

        app.addWindowListener(
            new WindowAdapter() {
                public void windowClosing( WindowEvent e )
                {
                    System.exit( 0 );
                }
            }
        );
    }
}