java - Save the field values of a panel using I/O file write -



java - Save the field values of a panel using I/O file write -

i have created swing page netbeans ide including 2 labels name , age , 2 text fields corresponding each label. problem how save page exclusively text file?

private void jbutton1actionperformed(java.awt.event.actionevent evt) { string sb = "test content"; int retrival = jfilechooser1.showsavedialog(null); if (retrival == jfilechooser.approve_option) { try( filewriter fw = new filewriter(jfilechooser1.getselectedfile()+".txt")) { fw.write("name: "+txtname.gettext()+"\n" ); fw.write("\nage: "+txtage.gettext() ); } grab (exception ex) { ex.printstacktrace(); } } }

i have tried code. expecting save panel text file.

if next true can simple:

all fields text fields (e.g. no text areas, combo boxes, spinners etc.). all labels associated fields (as in label.setlabelfor(component) called). example

uses properties file store text of text fields in container have associated label. restores values when next run.

see comments in code farther detail.

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.emptyborder; import java.io.*; import java.util.arraylist; import java.util.properties; public class autosaveform { private jcomponent ui = null; autosaveform() { initui(); } public void initui() { if (ui != null) { return; } ui = new jpanel(new borderlayout(6, 4)); jpanel labels = new jpanel(new gridlayout(0, 1, 4, 4)); ui.add(labels, borderlayout.line_start); jpanel fields = new jpanel(new gridlayout(0, 1, 4, 4)); ui.add(fields); (int ii = 1; ii < 16; ii++) { jlabel l = new jlabel("field " + ii); jtextfield tf = new jtextfield(20); l.setlabelfor(tf); labels.add(l); fields.add(tf); } ui.setborder(new emptyborder(8, 8, 8, 8)); restorefields(); } public jcomponent getui() { homecoming ui; } protected final void restorefields() { arraylist<jlabel> labels = new arraylist<jlabel>(); getlabels(ui, labels); file f = getpropertiesfile(); properties prop = new properties(); seek { filereader fr = new filereader(f); prop.load(fr); // restore values (jlabel label : labels) { string value = prop.getproperty(label.gettext()); component c = label.getlabelfor(); jtextfield tf = (jtextfield) c; tf.settext(value); } } grab (filenotfoundexception ex) { // proper exception handling & clean left user ex.printstacktrace(); } grab (ioexception ex) { ex.printstacktrace(); } } protected final void savefields() { arraylist<jlabel> labels = new arraylist<jlabel>(); getlabels(ui, labels); properties prop = new properties(); // populate properties file (jlabel label : labels) { component c = label.getlabelfor(); jtextfield tf = (jtextfield) c; prop.put(label.gettext(), tf.gettext()); } file f = getpropertiesfile(); seek { // proper exception handling & clean left user filewriter fw = new filewriter(f); prop.store(fw, "field values of form"); } grab (ioexception ex) { ex.printstacktrace(); } } /** * provide file reproducible , writable & readable. */ private final file getpropertiesfile() { file f = new file(system.getproperty("user.home")); f = new file(f, "java"); f = new file(f, "formfields.prop"); homecoming f; } /** * recursive method phone call labels in container. */ private final void getlabels(container c, arraylist<jlabel> labels) { component[] components = c.getcomponents(); (component component : components) { if (component instanceof jlabel) { jlabel l = (jlabel) component; labels.add(l); } else if (component instanceof container) { container container = (container) component; getlabels(container, labels); } } } public static void main(string[] args) { runnable r = new runnable() { @override public void run() { seek { uimanager.setlookandfeel( uimanager.getsystemlookandfeelclassname()); } grab (exception usedefault) { } autosaveform o = new autosaveform(); jframe f = new jframe("auto save form"); f.setdefaultcloseoperation(jframe.do_nothing_on_close); f.addwindowlistener(new savelistener(o, f)); f.setlocationbyplatform(true); f.setcontentpane(o.getui()); f.pack(); f.setminimumsize(f.getsize()); f.setvisible(true); } }; swingutilities.invokelater(r); } } class savelistener extends windowadapter { private autosaveform form; private jframe frame; public savelistener(autosaveform form, jframe frame) { this.form = form; this.frame = frame; } @override public void windowclosing(windowevent e) { form.savefields(); frame.dispose(); } }

java swing serialization io

Comments

Popular posts from this blog

c - Compilation of a code: unkown type name string -

java - Bypassing "final local variable defined in an enclosing type" -

json - Hibernate and Jackson (java.lang.IllegalStateException: Cannot call sendError() after the response has been committed) -