swing - Trouble appending to a text file in java. Can create .txt file and add data, but gets overwritten -


ok, first...yes, homework question. i'm stuck. i've been able create .txt file , save data gui text fields. continue add file long not exit gui. launch again, entire file gets overwritten next time save (click save button on gui). i'm trying is:

-enter data gui text fields -click save button (creating file , supposed append data .txt file) -be able read file panel -be able close , reopen gui , append .txt file necessary

i'm close, i'm doing dumb fear. below java code gui, createtextfile, , readtextfile

import java.awt.color; import java.awt.flowlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.sql.sqlexception;  import javax.swing.*;  public class donorgui extends jframe {      // components     private jpanel panel;     private jtextarea results;     private jbutton entrybutton;     private jbutton exitbutton;     private jbutton clearbutton;     private jbutton savebutton;     private jbutton openbutton;     private jtextfield donorfield;     private jtextfield charityfield;     private jtextfield pledgefield;      //create variables     string[] donorname = new string[20];     string[] charityname = new string[20];     double[] donationamt = new double[20];     int = 0;       // constants window size     private final int window_width = 750;     private final int window_height = 525;      //constructor     public donorgui(){          // set title.         settitle("wounded warrior donation tracker.");          // specify happens when close button clicked.         setdefaultcloseoperation(jframe.exit_on_close);          // build panel contains other components.         buildpanel();          // add panel content pane.         add(panel);          // size , display window.         setsize(window_width, window_height);         setvisible(true);     }      //the buildpanel method creates panel containing other components.     private void buildpanel(){          // create labels display instructions.         jlabel message1 = new jlabel("name of donor:");         jlabel message2 = new jlabel("name of charity:");         jlabel message3 = new jlabel("amount of pledge:");          //instantiate results area         results = new jtextarea(25,60);         results.seteditable(false);         results.setwrapstyleword(true);         results.setlinewrap(true);         results.setborder(borderfactory.createloweredbevelborder());           // create text fields receive user input         donorfield = new jtextfield(10);         charityfield = new jtextfield(10);         pledgefield = new jtextfield(10);           //create user buttons cause action         entrybutton = new jbutton("enter donation.");         entrybutton.addactionlistener(new entrybuttonlistener());         exitbutton = new jbutton("exit");         exitbutton.addactionlistener(new exitbuttonlistener());         clearbutton = new jbutton ("clear fields");         clearbutton.addactionlistener(new clearbuttonlistener());         savebutton = new jbutton ("save");         savebutton.addactionlistener(new savebuttonlistener());         openbutton = new jbutton ("open");         openbutton.addactionlistener(new openbuttonlistener());          // create panel.         panel = new jpanel();         panel.setbackground(color.orange);          //set layoutmanager         panel.setlayout(new flowlayout());          // add labels, text fields, , button panel.         panel.add(message1);         panel.add(donorfield);         panel.add(message2);         panel.add(charityfield);         panel.add(message3);         panel.add(pledgefield);         panel.add(results);         panel.add(entrybutton);         panel.add(clearbutton);         panel.add(savebutton);         panel.add(openbutton);         panel.add(exitbutton);           }     private class entrybuttonlistener implements actionlistener {          public void actionperformed(actionevent e) {              donorname[i] = donorfield.gettext();             charityname[i] = charityfield.gettext();             if (donationamt(pledgefield.gettext())) {                   donationamt[i] = double.parsedouble(pledgefield.gettext());             }else{                 donorfield.settext("");                 charityfield.settext("");                 pledgefield.settext("");             }             results.append(donorname[i]+" "+charityname[i]+" "+donationamt[i]+"\n ");             donorfield.settext("");             charityfield.settext("");             pledgefield.settext("");             i++;         }      }     public boolean donationamt(string amount) {          if(amount==null || amount=="" || amount.length()<1){  //checking empty field             joptionpane.showmessagedialog(null, "please enter amount pledged");             return false;         }         for(int = 0; < amount.length(); i++){  //verifying dollar amount entered number                 if (!character.isdigit(amount.charat(i)) && amount.charat(i)!='.'){                      joptionpane.showmessagedialog(null, "invalid input.");                     return false;                 }          }         return true;      }       private class clearbuttonlistener implements actionlistener {          public void actionperformed (actionevent e) {             donorfield.settext("");             charityfield.settext("");             pledgefield.settext("");             }     }     private class exitbuttonlistener implements actionlistener {          public void actionperformed(actionevent e) {             system.exit(0);         }     }     private class savebuttonlistener implements actionlistener {          public void actionperformed(actionevent e) {              createtextfile cr = new createtextfile();             cr.openfile();             cr.addrecords(donorname, charityname, donationamt);             cr.closefile();              javadbclass db = new javadbclass();            }      }     private class openbuttonlistener implements actionlistener {          public void actionperformed(actionevent e) {              readtextfile read = new readtextfile();             read.openfile();             donorgui donor = read.readrecords();             read.closefile();                        javadbclass db = new javadbclass(donor);             for(int = 0;i<donor.donationamt.length;i++){                  try {                     results.append(db.showtable()[i]+"\n");                 } catch (sqlexception e1) {                     // todo auto-generated catch block                     e1.printstacktrace();                 }              }         }      }      /* application method */     public static void main(string[] args){          donorgui rpc = new donorgui();     } } 

create text file java code:

/** create text file based on user input , save donations.txt.  *   */ import java.io.filenotfoundexception; import java.util.formatter; import java.util.formatterclosedexception; import java.util.nosuchelementexception;  public class createtextfile {      //object outputs text file     private formatter output;      //try opening file     public void openfile(){          try         {             output = new formatter("c:/prg421_data/donations.txt");         }         catch (securityexception securityexception)         {             system.out.println("you cannot write file.");         }         catch (filenotfoundexception notfoundexception)         {             system.out.println("you couldn't open or find file.");         }      }     //try writing file     public void addrecords(string[] donor, string[] charity, double[] donation){                  try{                      (int j=0; j<donor.length; j++) {                          if (donor[j] != null) {                             output.format("\n%s %s %.2f",donor[j],charity[j],donation[j]);                             }                      }               }                catch (formatterclosedexception formatterclosedexception){                       system.out.println("you couldn't write file.");                }                catch (nosuchelementexception elementexception){                       system.out.println("invalid input.");                }         }     //try closing file     public void closefile(){         if(output!=null)             output.close();     } } 

read text file java code:

import java.io.file; import java.io.filenotfoundexception; import java.util.scanner;  public class readtextfile {      private scanner input;      //try open file     public void openfile(){         try{             input = new scanner(new file("c:/prg421_data/donations.txt"));         }         catch (filenotfoundexception filenotfoundexception)         {             system.out.println("file not found.");             system.exit(1);         }     }     //try read file     public donorgui readrecords(){          donorgui gui = new donorgui();          while(input.hasnext())         {             for(int j = 0;j<20;j++){             gui.donorname[j] = input.next();             gui.charityname[j] = input.next();             gui.donationamt[j] = input.nextdouble();             }         }         return gui;      }     //try close file     public void closefile(){         if(input!=null)             input.close();      } } 

instead of

 output = new formatter("c:/prg421_data/donations.txt"); 

use

output = new formatter(new fileoutputstream("c:/prg421_data/donations.txt", true)); 

the true parameter means append.


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -