# Java: Example - ToUppercase

Level | Introductory
Structure | Separate main and GUI files.
Components | JButton, JTextField
Containers | JFrame, JPanel
Layouts | FlowLayout
Listeners | ActionListener as inner class
Other |

### Main program

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
    // ToUpperCase.java Example: Converts text in one field to uppercase in another.
    // Fred Swartz, 1999...2004-04-11

    import javax.swing.*;

    //////////////////////////////////////////////////////////////// ToUpperCase
    public class ToUpperCase {
        //================================================================= main
        public static void main(String[] args) {
            JFrame window = new ToUpperCaseGUI();
            window.setTitle("ToUpperCase Example");
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            window.show();  // Same as window.setVisible(true)
        }//end main
    }//end class ToUpperCase

### GUI code

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
    /** ToUpperCaseGUI.java Example: Converts text to uppercase.
        @author Fred Swartz
        @version 2004-04-16
    */

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

    ///////////////////////////////////////////////////////////// ToUpperCaseGUI
    /** GUI (window) for lower to uppercase conversion program. */
    public class ToUpperCaseGUI extends JFrame {
        //=================================================== instance variables
        private JTextField _inField  = new JTextField(20);
        private JTextField _outField = new JTextField(20);

        //========================================================== constructor
        /** Creates content pane of the window. */
        public ToUpperCaseGUI() {
            //-- 1. Create or set attributes of components.
            _outField.setEditable(false);  // Don't let user change output.
            JButton toUpperButton = new JButton("To Uppercase");

            //--- 2. Add listener(s).
            toUpperButton.addActionListener(new UpperCaseAction());

            //--- 3. Create a panel and add components to it
            JPanel p = new JPanel();
            p.setLayout(new FlowLayout());
            p.add(_inField);
            p.add(toUpperButton);
            p.add(_outField);

            //-- 4. Set the content panel of window and perform layout.
            this.setContentPane(p);
            this.pack();            // Do layout.
        }//end constructor

        //////////////////////////////////////////// inner class UpperCaseAction
        /** Class to hold action listener */
        class UpperCaseAction implements ActionListener {
            /** Actionlistener to convert text to uppercase. */
            public void actionPerformed(ActionEvent e) {
                String data = _inField.getText(); // get the text
                String out  = data.toUpperCase(); // create uppercase text
                _outField.setText(out);           // set output field
            }//end actionPerformed
        }//end inner class UpperCaseAction

    }//end class ToUpperCaseGUI

### Possible extensions

- Add an "Exit" button that stops the program by calling `System.exit(0)`.