java - JTable not getting data from Vector -
i have problem jtable: seemingly emty , not getting data objects vector pass it. checked related topics sadly dont find reason issue, , same code worked me once. further testing create objects on button click, add them vector , try refresh table. printlns show objects added vector, table still empty. assume, problem must somewhere in table code. post test class , related ones , hope can me.
the test class:
public class test_table extends jframe { private ppcontrol ppc; private entryfilepm epm; private jtable entrytable; private jpanel entrytablepanel; private jbutton addbutton; private jbutton savebutton; private jbutton loadbutton; private jpanel buttonspanel; private jlabel kursl; private jtextfield kurst; private jlabel cnumberl; private jtextfield cnumbert; private jlabel namel; private jtextfield namet; private jlabel datel; private jtextfield datet; private jlabel addressl; private jtextfield addresst; private jlabel pdatestl; private jtextfield pdatestt; private jlabel pdateendl; private jtextfield pdateendt; private jlabel roadl; private jtextfield roadt; private jlabel studyfl; private jtextfield studyft; private jlabel naprl; private jtextfield naprt; private jlabel ratingl; private jtextfield ratingt; private jlabel averagel; private jtextfield averaget; private jlabel profl; private jtextfield proft; private jlabel pbasel; private jtextfield pbaset; private jlabel homel; private jtextfield homet; private jpanel horriblepanel; private jbutton saveentrybutton; private jbutton cancelentrybutton; private jpanel entrybuttonspanel; private jpanel entryeditpanel; int idcounter = 1; public static void main(string[] args) throws entryexistsexception { try { new test_table(); } catch (ioexception e) { e.printstacktrace(); } } public int getidcounternext(){ return idcounter++; } public test_table() throws ioexception, entryexistsexception { super("test"); ppc = new ppcontrol(); initialize(); } private void initialize() { setsize(1200,800); setdefaultcloseoperation(jframe.do_nothing_on_close); setlayout(new borderlayout()); createentrytable(); createbuttonspanel(); createentrytab(); add(entrytablepanel,borderlayout.center); add(entryeditpanel, borderlayout.west); add(buttonspanel, borderlayout.south); this.setvisible(true); this.pack(); } private void createentrytable() { final vector<string> columns = new vector<string>(); columns.add("std"); columns.add("contr #"); columns.add("name"); columns.add("birth dt"); columns.add("address"); columns.add("pr date start"); columns.add("pr date end"); columns.add("road"); columns.add("std form"); columns.add("№ way"); columns.add("rating"); columns.add("avrg"); columns.add("prof"); columns.add("pr base"); columns.add("home"); final entrytablemodel entrymodel = new entrytablemodel(ppc.giveallentry(), columns); entrytable = new jtable(); entrytable.setmodel(entrymodel); entrytable.setshowgrid(true); // entrytable.getselectionmodel().setselectionmode(listselectionmodel.single_selection); // entrytable.getselectionmodel().addlistselectionlistener(new tableselectionlistener()); jscrollpane entryscrollpane = new jscrollpane(entrytable); entrytablepanel = new jpanel(); entrytablepanel.setlayout(new gridlayout()); entrytablepanel.add(entryscrollpane, borderlayout.center); entrytablepanel.setborder(borderfactory.createemptyborder(0, 10, 0, 10)); } private void createbuttonspanel() { addbutton = new jbutton("add"); savebutton = new jbutton("save"); savebutton.addactionlistener(new buttonslistener()); loadbutton = new jbutton("load"); loadbutton.addactionlistener(new buttonslistener()); buttonspanel = new jpanel(); buttonspanel.setlayout(new gridlayout(1, 3)); buttonspanel.add(addbutton); buttonspanel.add(savebutton); buttonspanel.add(loadbutton); } private void createentrytab(){ jlabel kursl = new jlabel ("kurs"); kurst = new jtextfield(); //otherlabels/tfields jlabel ratingl = new jlabel("rating.double"); ratingt = new jtextfield(); jlabel averagel = new jlabel("average.double"); averaget = new jtextfield(); jlabel profl = new jlabel("profession"); proft = new jtextfield(); jlabel pbasel = new jlabel("prak.base"); pbaset = new jtextfield(); jlabel homel = new jlabel("home"); homet = new jtextfield(); horriblepanel = new jpanel(); jscrollpane horriblescrollpane = new jscrollpane(horriblepanel); horriblepanel.setlayout(new gridlayout(15,2)); // horriblepanel.add(horriblescrollpane, borderlayout.center); horriblepanel.add(kursl); horriblepanel.add(kurst); //other labels/tfields horriblepanel.add(homel); horriblepanel.add(homet); saveentrybutton = new jbutton("save"); saveentrybutton.addactionlistener(new buttonslistener()); cancelentrybutton = new jbutton("cancel"); entrybuttonspanel = new jpanel(); entrybuttonspanel.setlayout(new gridlayout()); entrybuttonspanel.add(saveentrybutton); entrybuttonspanel.add(cancelentrybutton); entryeditpanel = new jpanel(); entryeditpanel.setlayout(new gridlayout()); entryeditpanel.add(horriblepanel); entryeditpanel.add(entrybuttonspanel); } class tableselectionlistener implements listselectionlistener { @override public void valuechanged(listselectionevent e) { int rowindex = -1; if (e.getsource().equals(entrytable.getselectionmodel()) && entrytable.getselectedrow() != -1) { rowindex = entrytable.convertrowindextomodel(entrytable .getselectedrow()); entrytablemodel em = (entrytablemodel) entrytable.getmodel(); entry entry = em.giveentryinrow(rowindex); } } } class buttonslistener implements actionlistener{ public void actionperformed(final actionevent ae) { if(ae.getsource().equals(addbutton)){ } if (ae.getsource().equals(savebutton)){ try { epm.exporttable(entrytable); } catch (ioexception e) { e.printstacktrace(); } } if(ae.getsource().equals(loadbutton)){ try { epm.importtable("c:/test.xls"); } catch (biffexception | ioexception | parseexception e) { // todo auto-generated catch block e.printstacktrace(); } } if (ae.getsource().equals(saveentrybutton)) { calendar c = new gregoriancalendar(); int studyyear = 23;// integer.parseint(kurst.gettext()); int contractnumber = getidcounternext(); contractnumber++;// integer.parseint(cnumbert.gettext()); string stname = "uano";// namet.gettext(); date birthdate = c.gettime(); // birthdate = epm.converttodate(datet.gettext()); string address = "abc asd fg 123";// addresst.gettext(); date practicedatestart = c.gettime(); // practicedatestart = epm.converttodate(pdatestt.gettext()); date practicedateend = c.gettime(); // practicedateend = epm.converttodate(pdateendt.gettext()); string railway = "bad road";// roadt.gettext(); string studyform = "bad form";// studyft.gettext(); int directionnumber = 1232; // = // integer.parseint(naprt.gettext()); double rating = 3.4;// double.parsedouble(ratingt.gettext()); double average = 4.5;// double.parsedouble(averaget.gettext()); string profession = "fcki";// proft.gettext(); string practicebase = "fckh";// pbaset.gettext(); string inhabitation = "fckf2";// homet.gettext(); try { ppc.addentry(studyyear, contractnumber, stname, birthdate, address, practicedatestart, practicedateend, railway, studyform, directionnumber, rating, average, profession, practicebase, inhabitation); (entry e : ppc.giveallentry()) { system.out.println(e.getcontractnumber()); system.out.println(e.getname()); system.out.println(e.getbirthdate()); } final entrytablemodel em = (entrytablemodel) entrytable.getmodel(); system.out.println("a"); em.setdatavector(ppc.giveallentry()); entrytable.updateui(); system.out.println("b"); } catch (entryexistsexception e1) { // todo auto-generated catch block e1.printstacktrace(); } } } } }
the tablemodel class:
public class entrytablemodel extends defaulttablemodel { private vector<entry> entrylist; public entrytablemodel(final vector<entry> elist, final vector<string> columnnames) { super(); this.columnidentifiers = columnnames; entrylist = (vector<entry>) elist; this.setdatavector(elist); } void setdatavector(final vector<entry> elist) { final vector<vector<string>> rows = new vector<vector<string>>(); (entry e : elist) { final vector<string> entryasvector = new vector<string>(); entryasvector.add("" + e.getstudyyear()); entryasvector.add("" + e.getcontractnumber()); entryasvector.add(e.getname()); entryasvector.add("" + e.getbirthdate()); entryasvector.add(e.getaddress()); entryasvector.add("" + e.getpracticedatestart()); entryasvector.add("" + e.getpracticedateend()); entryasvector.add(e.getrailway()); entryasvector.add(e.getstudyform()); entryasvector.add("" + e.getdirectionnumber()); entryasvector.add("" + e.getrating()); entryasvector.add("" + e.getaverage()); entryasvector.add(e.getprofession()); entryasvector.add(e.getpracticebase()); entryasvector.add(e.getinhabitation()); } this.setdatavector(rows, columnidentifiers); } public boolean iscelleditable(int row, int column) { return false; } public entry giveentryinrow(int row) { return entrylist.get(row); }
the functions give objects vector
public class entrycontrol { private vector <entry> entrylist = new vector <entry> (); public void addentry(entry e) throws entryexistsexception{ if (entrylist.contains(e)) throw new entryexistsexception(e, ""); else entrylist.add(e); } public vector<entry> listallentry(){ return entrylist; } //reference in main control class public vector<entry> giveallentry(){ return entrycontrol.listallentry(); }
in setdatavector
method, not adding rows
. want add line:
rows.add(entryasvector);
you have uncovered problem if had checked value of rows
when pass this.setdatavector, either adding print statement or using debugger.
Comments
Post a Comment