Java - I need to update JTextFields in a Swing GUI program -
this question has answer here:
- watchservice java 6 [closed] 3 answers
i have program looks single notepad file contains information similar to:
cardiff : 3245658 bristol : 4726485 manchester : 4728945
these places , numbers coming out of automatic system, , numbers change every 20 seconds or so. need create loop(i'm guessing) when numbers change, program notepad file , update number in jtextfield
p.s have created program looks file, gets information needs , puts in correct place, using arraylist,
all need how make code automatically update when there change in file, , need without using sort of jbuttons
, needs itself.
my whole code stands:
package window; import java.awt.color; import java.awt.eventqueue; import java.io.bufferedreader; import java.io.filenotfoundexception; import java.io.filereader; import java.io.ioexception; import java.util.arraylist; import javax.swing.imageicon; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jtextfield; import javax.swing.uimanager; import javax.swing.unsupportedlookandfeelexception; public class maptest { private jframe frame; static jtextfield txtcardiff; static jtextfield txtbristol; static jtextfield txtsheffield; static jtextfield txtderby; static jtextfield txtglasgow; static jtextfield txtfalkirk; static jtextfield txtnewcastle; static jtextfield txtleeds; static jtextfield txtpreston; static jtextfield txtmanchester; static jtextfield txtwolverhampton; static jtextfield txtbirmingham; static jtextfield txtmiltonkeynes; static jtextfield txtpeterborough; static jtextfield txtcolindale; static jtextfield txtstepneygreen; static jtextfield txtslough; static jtextfield txtfaraday; static jtextfield txtguildford; static jtextfield txtsouthbank; static bufferedreader csvfile = new bufferedreader(new filereader ("c:/users/606854007/workspace/networkapptest/jar/window/cardiff.txt")); // putting static infront of br ' csvfile' gives: //unhandled exception type filenotfoundexception. //but when take away 'static' causes problem in 'filecheckerworker' class. // (will comment , what) arraylist<string> csv = new arraylist<string>(); /** private string output = ""; private string output1 = ""; private string output2 = ""; private string output3 = ""; private string output4 = ""; private string output5 = ""; private string output6 = ""; private string output7 = ""; private string output8 = ""; private string output9 = ""; private string output10 = ""; private string output11 = ""; private string output12 = ""; private string output13 = ""; private string output14 = ""; private string output15 = ""; private string output16 = ""; private string output17 = ""; private string output18 = ""; private string output19 = ""; **/ /** * launch application. */ public static void main(string[] args) { try { uimanager.setlookandfeel( uimanager.getsystemlookandfeelclassname()); } catch (classnotfoundexception e1) { e1.printstacktrace(); } catch (instantiationexception e1) { e1.printstacktrace(); } catch (illegalaccessexception e1) { e1.printstacktrace(); } catch (unsupportedlookandfeelexception e1) { e1.printstacktrace(); } eventqueue.invokelater(new runnable() { public void run() { try { maptest window = new maptest(); window.frame.setvisible(true); } catch (exception e) { e.printstacktrace(); } } }); } /** * create application. * * @throws ioexception */ public maptest() throws ioexception { try { initialize(); } catch (filenotfoundexception e) { e.printstacktrace(); } } /** * initialise contents of frame. * * @param output * @throws ioexception */ private void initialize() throws ioexception { csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); csv.add(csvfile.readline()); system.out.println(csv.get(0)); system.out.println(csv.get(1)); system.out.println(csv.get(2)); system.out.println(csv.get(3)); system.out.println(csv.get(4)); system.out.println(csv.get(5)); system.out.println(csv.get(6)); system.out.println(csv.get(7)); system.out.println(csv.get(8)); system.out.println(csv.get(9)); system.out.println(csv.get(10)); system.out.println(csv.get(11)); system.out.println(csv.get(12)); system.out.println(csv.get(13)); system.out.println(csv.get(14)); system.out.println(csv.get(15)); system.out.println(csv.get(16)); system.out.println(csv.get(17)); system.out.println(csv.get(18)); system.out.println(csv.get(19)); /** * jpanel container = new jpanel(); container.add(txtbirmingham); * container.add(txtbristol); container.add(txtcardiff); * container.add(txtcolindale); container.add(txtderby); * container.add(txtfalkirk); container.add(txtglasgow); * container.add(txtguildford); container.add(txtleeds); * container.add(txtmanchester); container.add(txtmiltonkeynes); * container.add(txtnewcastle); container.add(txtpeterborough); * container.add(txtpreston); container.add(txtsheffield); * container.add(txtslough); container.add(txtsouthbank); * container.add(txtstepneygreen); container.add(txtwolverhampton); * //container.add(); jscrollpane jsp = new jscrollpane(container); * frame.add(jsp); **/ frame = new jframe(); frame.setbounds(0, 0, 1000, 1086); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.getcontentpane().setlayout(null); frame.setbackground(color.cyan); txtcardiff = new jtextfield(); txtcardiff.settext(csv.get(0)); txtcardiff.setbackground(color.green); txtcardiff.setbounds(305, 699, 102, 20); frame.getcontentpane().add(txtcardiff); txtcardiff.setcolumns(10); txtbristol = new jtextfield(); txtbristol.settext(csv.get(1)); txtbristol.setbackground(color.green); txtbristol.setbounds(416, 780, 102, 20); frame.getcontentpane().add(txtbristol); txtbristol.setcolumns(10); txtsheffield = new jtextfield(); txtsheffield.settext(csv.get(2)); txtsheffield.setbackground(color.green); txtsheffield.setbounds(517, 356, 110, 20); frame.getcontentpane().add(txtsheffield); txtsheffield.setcolumns(10); txtderby = new jtextfield(); txtderby.settext(csv.get(3)); txtderby.setbackground(color.green); txtderby.setbounds(582, 451, 90, 20); frame.getcontentpane().add(txtderby); txtderby.setcolumns(10); txtglasgow = new jtextfield(); txtglasgow.settext(csv.get(4)); txtglasgow.setbackground(color.green); txtglasgow.setbounds(250, 94, 102, 20); frame.getcontentpane().add(txtglasgow); txtglasgow.setcolumns(10); txtfalkirk = new jtextfield(); txtfalkirk.settext(csv.get(5)); txtfalkirk.setcolumns(10); txtfalkirk.setbackground(color.green); txtfalkirk.setbounds(331, 41, 102, 20); frame.getcontentpane().add(txtfalkirk); txtnewcastle = new jtextfield(); txtnewcastle.settext(csv.get(6)); txtnewcastle.setcolumns(10); txtnewcastle.setbackground(color.green); txtnewcastle.setbounds(424, 141, 111, 20); frame.getcontentpane().add(txtnewcastle); txtleeds = new jtextfield(); txtleeds.settext(csv.get(7)); txtleeds.setcolumns(10); txtleeds.setbackground(color.green); txtleeds.setbounds(481, 244, 102, 20); frame.getcontentpane().add(txtleeds); txtpreston = new jtextfield(); txtpreston.settext(csv.get(8)); txtpreston.setcolumns(10); txtpreston.setbackground(color.green); txtpreston.setbounds(356, 221, 102, 20); frame.getcontentpane().add(txtpreston); txtmanchester = new jtextfield(); txtmanchester.settext(csv.get(9)); txtmanchester.setcolumns(10); txtmanchester.setbackground(color.green); txtmanchester.setbounds(394, 394, 124, 20); frame.getcontentpane().add(txtmanchester); txtwolverhampton = new jtextfield(); txtwolverhampton.settext(csv.get(10)); txtwolverhampton.setcolumns(10); txtwolverhampton.setbackground(color.green); txtwolverhampton.setbounds(360, 486, 153, 20); frame.getcontentpane().add(txtwolverhampton); txtbirmingham = new jtextfield(); txtbirmingham.settext(csv.get(11)); txtbirmingham.setcolumns(10); txtbirmingham.setbackground(color.green); txtbirmingham.setbounds(424, 553, 128, 20); frame.getcontentpane().add(txtbirmingham); txtmiltonkeynes = new jtextfield(); txtmiltonkeynes.settext(csv.get(12)); txtmiltonkeynes.setcolumns(10); txtmiltonkeynes.setbackground(color.green); txtmiltonkeynes.setbounds(474, 604, 135, 20); frame.getcontentpane().add(txtmiltonkeynes); txtpeterborough = new jtextfield(); txtpeterborough.settext(csv.get(13)); txtpeterborough.setcolumns(10); txtpeterborough.setbackground(color.green); txtpeterborough.setbounds(655, 576, 135, 20); frame.getcontentpane().add(txtpeterborough); txtcolindale = new jtextfield(); txtcolindale.settext(csv.get(14)); txtcolindale.setcolumns(10); txtcolindale.setbackground(color.green); txtcolindale.setbounds(541, 699, 107, 20); frame.getcontentpane().add(txtcolindale); txtstepneygreen = new jtextfield(); txtstepneygreen.settext(csv.get(15)); txtstepneygreen.setcolumns(10); txtstepneygreen.setbackground(color.green); txtstepneygreen.setbounds(667, 699, 137, 20); frame.getcontentpane().add(txtstepneygreen); txtslough = new jtextfield(); txtslough.settext(csv.get(16)); txtslough.setcolumns(10); txtslough.setbackground(color.green); txtslough.setbounds(525, 756, 102, 20); frame.getcontentpane().add(txtslough); txtfaraday = new jtextfield(); txtfaraday.settext(csv.get(17)); txtfaraday.setcolumns(10); txtfaraday.setbackground(color.green); txtfaraday.setbounds(650, 756, 102, 20); frame.getcontentpane().add(txtfaraday); txtguildford = new jtextfield(); txtguildford.settext(csv.get(18)); txtguildford.setcolumns(10); txtguildford.setbackground(color.green); txtguildford.setbounds(525, 822, 102, 20); frame.getcontentpane().add(txtguildford); txtsouthbank = new jtextfield(); txtsouthbank.settext(csv.get(19)); txtsouthbank.setcolumns(10); txtsouthbank.setbackground(color.green); txtsouthbank.setbounds(655, 807, 115, 20); frame.getcontentpane().add(txtsouthbank); jlabel lblnewlabel = new jlabel("new label"); lblnewlabel.setforeground(color.black); lblnewlabel.setbackground(color.black); lblnewlabel .seticon(new imageicon( "c:\\users\\606854007\\workspace\\networkapptest\\test\\window\\england_wales.gif")); lblnewlabel.setbounds(33, 11, 890, 1086); frame.getcontentpane().add(lblnewlabel); new filecheckerworker(null).execute(); \\ if dont null in '()' comes error, \\and makes execute: /** public filecheckerworker(maptest maptest) { this.maptest = maptest; } **/ \\ not want, have tried add commands \\to run methods within: \\ ' public filecheckerworker(maptest maptest)' method \\ gives me null pointer exception, } }
below 'filecheckerworker' class hoping i've done right :p
package window; import java.io.bufferedreader; import java.io.file; import java.io.filereader; import java.util.arraylist; import java.util.list; import javax.swing.swingworker; public class filecheckerworker extends swingworker<object, list<string>> { private maptest maptest; public filecheckerworker(maptest maptest) { this.maptest = maptest; } @override protected void process(list<list<string>> chunks) { list<string> values = chunks.get(chunks.size() - 1); maptest.txtcardiff.settext(values.get(0)); maptest.txtbristol.settext(values.get(1)); maptest.txtsheffield.settext(values.get(2)); maptest.txtderby.settext(values.get(3)); maptest.txtglasgow.settext(values.get(4)); maptest.txtfalkirk.settext(values.get(5)); maptest.txtnewcastle.settext(values.get(6)); maptest.txtleeds.settext(values.get(7)); maptest.txtpreston.settext(values.get(8)); maptest.txtmanchester.settext(values.get(9)); maptest.txtwolverhampton.settext(values.get(10)); maptest.txtbirmingham.settext(values.get(11)); maptest.txtmiltonkeynes.settext(values.get(12)); maptest.txtpeterborough.settext(values.get(13)); maptest.txtcolindale.settext(values.get(14)); maptest.txtstepneygreen.settext(values.get(15)); maptest.txtslough.settext(values.get(16)); maptest.txtfaraday.settext(values.get(17)); maptest.txtguildford.settext(values.get(18)); maptest.txtsouthbank.settext(values.get(19)); } @override protected object doinbackground() throws exception { long lastupdated = -1; file csvfile = new file("c:/users/606854007/workspace/networkapptest/jar/window/cardiff.txt"); while (true) { if (csvfile.lastmodified() != lastupdated) { bufferedreader csvreader = null; list<string> values = new arraylist<string>(20); try { csvreader = new bufferedreader(new filereader("c:/users/606854007/workspace/networkapptest/jar/window/cardiff.txt")); (int index = 0; index < 20; index++) { values.add(maptest.csvfile.readline()); } publish(values); lastupdated = csvfile.lastmodified(); } { try { csvreader.close(); } catch (exception e) { } } thread.sleep(5000); system.out.println("check change"); } } } }
updated both codes now.
also when thought had 'doinbackground' working if gave me nullpointerexception on line values.add(maptest.csvfile.readline());
take @ scheduledexecutorservice. using can schedule periodic tasks. (in case reading file @ every 20 seconds).
Comments
Post a Comment