| |
Being able to load and edit a text file is important. This program makes use of JFileChooser controls and the JTextArea for Editing. We use HEADLINE Scripting with lowercase prefixes for most objects. We also use acronyms for field names (AccountNumber=ACTNBR). Please pardon the formatting from the HTML editor. Indentations were lost, and it selected some funky fonts and colors.
Copyrighted by CompuCranks.com (2006)
//**************************************************************************
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.event.*;
import javax.swing.text.*;
//**************************************************************************
class guiFILE_IO extends JFrame{
//**************************************************************************
private JMenuBar mnuBAR;
private JMenu mnuFILE;
private JMenuItem mnuITEM;
private JPanel panel;
private JTextArea tbxTEXT;
private JScrollPane sbrTEXT;
private JButton btnOPEN;
private JButton btnSAVE;
private JButton btnCANCEL;
private JFileChooser dlgFILEBOX;
private Insets insets;
//--------------------------------------------------------------------------
public guiFILE_IO(){
//--------------------------------------------------------------------------
setTitle("JAVA FileI/O");
setBounds(267,150,600,525);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mnuBAR = new JMenuBar();
mnuFILE = new JMenu("File");
mnuBAR.add(mnuFILE);
mnuITEM = new JMenuItem("Open File");
mnuITEM.addActionListener(new MenuHandler());
mnuFILE.add(mnuITEM);
mnuITEM = new JMenuItem("Save File");
mnuITEM.addActionListener(new MenuHandler());
mnuFILE.add(mnuITEM);
mnuFILE.addSeparator();
mnuITEM = new JMenuItem("Exit");
mnuITEM.addActionListener(new MenuHandler());
mnuFILE.add(mnuITEM);
this.setJMenuBar(mnuBAR);
panel = new JPanel();
panel.setLayout(null);
insets = panel.getInsets();
this.add(panel);
tbxTEXT = new JTextArea();
tbxTEXT.setFont(new Font("Courier", Font.BOLD, 12));
tbxTEXT.setTabSize(4);
sbrTEXT = new JScrollPane(tbxTEXT);
sbrTEXT.setBounds(insets.left + 10, insets.top + 10, 575, 400);
panel.add(sbrTEXT);
btnOPEN = new JButton("Open");
btnOPEN.setBounds(insets.left + 100,insets.top + 420,100,35);
btnOPEN.setBorder(BorderFactory.createRaisedBevelBorder());
btnOPEN.addActionListener(new ButtonHandler());
panel.add(btnOPEN);
btnSAVE = new JButton("Save");
btnSAVE.setBounds(insets.left + 250,insets.top + 420,100,35);
btnSAVE.setBorder(BorderFactory.createRaisedBevelBorder());
btnSAVE.addActionListener(new ButtonHandler());
panel.add(btnSAVE);
btnCANCEL = new JButton("Cancel");
btnCANCEL.setBounds(insets.left + 400,insets.top + 420,100,35);
btnCANCEL.setBorder(BorderFactory.createRaisedBevelBorder());
btnCANCEL.addActionListener(new ButtonHandler());
panel.add(btnCANCEL);
dlgFILEBOX= new JFileChooser(System.getProperty("user.dir"));
}
//-----------------------------------------------------------------------------
private class MenuHandler implements ActionListener{
//-----------------------------------------------------------------------------
public void actionPerformed(ActionEvent e){
JMenuItem M = (JMenuItem)e.getSource();
if (M.getText().equals("Open File")) {
int RC = dlgFILEBOX.showOpenDialog(guiFILE_IO.this);
if (RC==JFileChooser.APPROVE_OPTION) {
File F =dlgFILEBOX.getSelectedFile();
tbxTEXT.setText("");
setTitle("JAVA FileI/O " + F.getName());
ReadText(F);
}
} else if (M.getText().equals("Save File")) {
int RC = dlgFILEBOX.showSaveDialog(guiFILE_IO.this);
if (RC==JFileChooser.APPROVE_OPTION) {
File F =dlgFILEBOX.getSelectedFile();
WriteText(F);
tbxTEXT.setText("");
}
} else if (M.getText().equals("Exit")) {
dispose();
}
}
}
//-----------------------------------------------------------------------------
private class ButtonHandler implements ActionListener{
//-----------------------------------------------------------------------------
public void actionPerformed(ActionEvent e){
if (e.getSource()==btnOPEN) {
int RC = dlgFILEBOX.showOpenDialog(guiFILE_IO.this);
if (RC==JFileChooser.APPROVE_OPTION) {
File F =dlgFILEBOX.getSelectedFile();
tbxTEXT.setText("");
setTitle("JAVA FileI/O " + F.getName());
ReadText(F);
}
} else if (e.getSource()==btnSAVE) {
int RC = dlgFILEBOX.showSaveDialog(guiFILE_IO.this);
if (RC==JFileChooser.APPROVE_OPTION) {
File F =dlgFILEBOX.getSelectedFile();
WriteText(F);
tbxTEXT.setText("");
}
} else if (e.getSource()==btnCANCEL) {
dispose();
}
}
}
//-----------------------------------------------------------------------------
private void ReadText(File F) {
//-----------------------------------------------------------------------------
String wrkTEXT ="";
try{
FileReader FR= new FileReader(F.getName());
BufferedReader BR = new BufferedReader(FR);
while ((wrkTEXT=BR.readLine()) !=null) {
tbxTEXT.append(wrkTEXT + "\n");
}
}
catch(Exception e){
tbxTEXT.append("ERROR in Reading File\n");
}
}
//-----------------------------------------------------------------------------
private void WriteText(File F) {
//-----------------------------------------------------------------------------
int wrkSTR =0; int wrkLEN=0;
Element E = tbxTEXT.getDocument().getDefaultRootElement();
int C = E.getElementCount();
try{
FileWriter FW = new FileWriter(F.getName());
BufferedWriter BW = new BufferedWriter(FW);
for (int X=0; X<C; X++ ){
Element e = E.getElement(X);
wrkSTR=e.getStartOffset();
wrkLEN=e.getEndOffset()-wrkSTR;
BW.write(tbxTEXT.getText(wrkSTR, wrkLEN));
}
BW.flush();
FW.flush();
BW.close();
FW.close();
setTitle("JAVA FileI/O");
} catch(Exception e) {
tbxTEXT.append("ERROR in Reading File\n");
}
}
//--------------------------------------------------------------------------
public static void main(String[] args){
//--------------------------------------------------------------------------
guiFILE_IO gui = new guiFILE_IO();
gui.setVisible(true);
}
}
|