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
}