# Java Notes: Example - Read into textarea

This example program reads from a file into a textarea. A weakness is that it has not concept of model, some logical problem that is being solved. A real program might send the file text to a model where it would be stored, processed, or whatever.

Example of: JFileChooser, BufferedReader, ...

Enhancements: Write file, create menus, create a model to do something with the file, ...

## A simple main program

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
    // FileIoDemo/FileInput.java -- Demonstrate File Input
    // Fred Swartz - December 2004

    package FileIoDemo;

    import javax.swing.*;

    public class FileInput {
        public static void main(String[] args) {
            JFrame window = new FileInputGUI();
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            window.setVisible(true);
        }
    }

## The GUI

      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
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
    // FileIoDemo/FileInputGUI.java -- Demonstrate File Input
    // Fred Swartz - December 2004

    package FileIoDemo;

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

    class FileInputGUI extends JFrame {
        JTextArea    m_fileContents = new JTextArea(20, 80);
        JFileChooser m_fc = new JFileChooser(".");

        //======================================================= constructor
        FileInputGUI() {
            //... Create a button to open a file.
            JButton openFileBtn = new JButton("Open");
            openFileBtn.addActionListener(new OpenAction());

            //... Create a "controls" panel with button on it.
            JPanel controls = new JPanel();
            controls.setLayout(new FlowLayout());
            controls.add(openFileBtn);

            //... Create the content pane with controls and a textarea.
            JPanel content = new JPanel();
            content.setLayout(new BorderLayout());
            content.add(controls, BorderLayout.NORTH);
            content.add(new JScrollPane(m_fileContents), BorderLayout.CENTER);

            this.setContentPane(content);
            this.pack();
            this.setTitle("File Input");
        }

        ////////////////////////////////////// inner listener class OpenAction
        class OpenAction implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                int retval = m_fc.showOpenDialog(FileInputGUI.this);
                if (retval == JFileChooser.APPROVE_OPTION) {
                    File inFile = m_fc.getSelectedFile();
                    try {
                        FileReader fr = new FileReader(inFile);
                        BufferedReader bufRdr = new BufferedReader(fr);

                        String line = null;
                        while ((line = bufRdr.readLine()) != null){
                            m_fileContents.append(line);
                            m_fileContents.append("\n");
                        }
                        bufRdr.close();

                    } catch (IOException ioex) {
                        System.err.println(ioex);
                        System.exit(1);
                    }
                }
            }//end actionPerformed
        }//end inner listener class OpenAction
    }