So far we have written Java programs that read from stdin or text files and only write to stdout or text files. We will now write Java programs that act like Windows programs, running in a graphical window containing traditional Windows like components such as buttons, text input fields and other graphical controls. The principal class Java uses to represent a Windows like program is the JFrame class. All Java GUI applications are based on JFrame.