java - Unable to 'read' text file after creating and adding data to it -
i've received regarding how append text file, seems i've broken else. i'm not able 'read' file.
what i'm trying is:
- enter data gui text fields
- click save button(creating file , appending data .txt file)
- be able read file panel
i'm doing dumb again, 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(new fileoutputstream("c:/temp/donations.txt", true)); } 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:/temp/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(); } }
errors received:
exception in thread "awt-eventqueue-0" java.util.inputmismatchexception @ java.util.scanner.throwfor(scanner.java:840) @ java.util.scanner.next(scanner.java:1461) @ java.util.scanner.nextdouble(scanner.java:2387) @ readtextfile.readrecords(readtextfile.java:39) @ donorgui$openbuttonlistener.actionperformed(donorgui.java:191) @ javax.swing.abstractbutton.fireactionperformed(abstractbutton.java:1995) @ javax.swing.abstractbutton$handler.actionperformed(abstractbutton.java:2318) @ javax.swing.defaultbuttonmodel.fireactionperformed(defaultbuttonmodel.java:387) @ javax.swing.defaultbuttonmodel.setpressed(defaultbuttonmodel.java:242) @ javax.swing.plaf.basic.basicbuttonlistener.mousereleased(basicbuttonlistener.java:236) @ java.awt.component.processmouseevent(component.java:6288) @ javax.swing.jcomponent.processmouseevent(jcomponent.java:3267) @ java.awt.component.processevent(component.java:6053) @ java.awt.container.processevent(container.java:2041) @ java.awt.component.dispatcheventimpl(component.java:4651) @ java.awt.container.dispatcheventimpl(container.java:2099) @ java.awt.component.dispatchevent(component.java:4481) @ java.awt.lightweightdispatcher.retargetmouseevent(container.java:4577) @ java.awt.lightweightdispatcher.processmouseevent(container.java:4238) @ java.awt.lightweightdispatcher.dispatchevent(container.java:4168) @ java.awt.container.dispatcheventimpl(container.java:2085) @ java.awt.window.dispatcheventimpl(window.java:2478) @ java.awt.component.dispatchevent(component.java:4481) @ java.awt.eventqueue.dispatcheventimpl(eventqueue.java:643) @ java.awt.eventqueue.access$000(eventqueue.java:84) @ java.awt.eventqueue$1.run(eventqueue.java:602) @ java.awt.eventqueue$1.run(eventqueue.java:600) @ java.security.accesscontroller.doprivileged(native method) @ java.security.accesscontrolcontext$1.dointersectionprivilege(accesscontrolcontext.java:87) @ java.security.accesscontrolcontext$1.dointersectionprivilege(accesscontrolcontext.java:98) @ java.awt.eventqueue$2.run(eventqueue.java:616) @ java.awt.eventqueue$2.run(eventqueue.java:614) @ java.security.accesscontroller.doprivileged(native method) @ java.security.accesscontrolcontext$1.dointersectionprivilege(accesscontrolcontext.java:87) @ java.awt.eventqueue.dispatchevent(eventqueue.java:613) @ java.awt.eventdispatchthread.pumponeeventforfilters(eventdispatchthread.java:269) @ java.awt.eventdispatchthread.pumpeventsforfilter(eventdispatchthread.java:184) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(eventdispatchthread.java:174) @ java.awt.eventdispatchthread.pumpevents(eventdispatchthread.java:169) @ java.awt.eventdispatchthread.pumpevents(eventdispatchthread.java:161) @ java.awt.eventdispatchthread.run(eventdispatchthread.java:122) build successful (total time: 8 seconds)
in openfile()
method:
input = new scanner(new fileinputstream("c:/temp/donations.txt"));
in readrecords()
method:
try { int j=0; while (input.hasnextline()){ string line=input.nextline().trim(); if (!line.equals("")){ string inp[]=line.split("\s"); gui.donorname[j] = inp[0]; gui.charityname[j] = inp[1]; gui.donationamt[j++] = double.parsedouble(inp[2]); } if (j==20){break;} //don't understand why need see in code } }catch (exception e){ e.printstacktrace(); }
Comments
Post a Comment