swing - show the first SQL row in jTable in java -
jtable doesn't show first row. created sql table list of files in directory , show in jtable in java. see table, cant see first row.
example: in directory have 20 files. code insert sql table of 20 files, in jtable show last 19 files.
my code:
public void ba() throws sqlexception{ string dirpath = "c:/users/hajdukri/desktop/source folder"; file dir = new file(dirpath); file[] files = dir.listfiles(); string sqll = "select * t1;"; st = con.preparestatement(sqll); rs = st.executequery(); string sql2 = "delete t1"; st = con.preparestatement(sql2); st.executeupdate(); simpledateformat sdf = new simpledateformat("dd.mm.yyyy hh:mm kk"); java.sql.date sqldate = new java.sql.date(new java.util.date().gettime()); if (files.length == 0){ system.out.println("the directory empty"); } else { (file afile : files) { int fileslength = 0; string s = null; if(afile.length()>1024 || (afile.length()<(1024*1024))){ fileslength =(int) (afile.length()/1024); s = "kb"; } if(afile.length()>(1024*1024)){ fileslength =(int) (afile.length()/(1024*1024)); s = "mb"; } if(afile.length()<1024){ fileslength =(int) (afile.length()); s = "b"; } string createdate = sdf.format(afile.lastmodified()); string remark = "remark"; string sql = "insert t1 (date,login,name,size,time,action) values ('"+createdate+"'"+","+"'"+username+"'"+","+"'"+afile.getname()+"'"+","+"'"+fileslength+s+"'"+","+"'"+sdf.format(afile.lastmodified())+"'"+","+"'"+remark+"')"; st = con.preparestatement(sql); st.executeupdate(); } } try { string sql = "select * t1"; st = con.preparestatement(sql); rs = st.executequery(); while(rs.next()) { tablemodel model = dbutils.resultsettotablemodel(rs); jtable1.setmodel(model); jtable1.scrollrecttovisible(jtable1.getcellrect(jtable1.getrowcount()-1, 0, true)); } } catch (sqlexception ex) { logger.getlogger(main.class.getname()).log(level.severe, null, ex); } }
jtable created:
jtable1.setmodel(new javax.swing.table.defaulttablemodel( new object [][] { {null, null, null, null, null, null}, {null, null, null, null, null, null}, {null, null, null, null, null, null}, {null, null, null, null, null, null}, {null, null, null, null, null, null}, {null, null, null, null, null, null}, {null, null, null, null, null, null}, }, new string [] { "date", "login", "name", "size", "file", "action" } ) { class[] types = new class [] { java.lang.object.class, java.lang.object.class, java.lang.object.class, java.lang.byte.class, java.lang.object.class, java.lang.string.class }; boolean[] canedit = new boolean [] { false, false, false, false, false, false }; public class getcolumnclass(int columnindex) { return types [columnindex]; } public boolean iscelleditable(int rowindex, int columnindex) { return canedit [columnindex]; } }); jtable1.seteditingcolumn(1); jtable1.seteditingrow(1); jtable1.setselectionbackground(new java.awt.color(0, 153, 51)); jtable1.addmouselistener(new java.awt.event.mouseadapter() { public void mouseclicked(java.awt.event.mouseevent evt) { jtable1mouseclicked(evt); } });
how can set visible first row too? i'm looking same problems can't find :( me please?
while(rs.next()) { tablemodel model = dbutils.resultsettotablemodel(rs); jtable1.setmodel(model); jtable1.scrollrecttovisible(jtable1.getcellrect(jtable1.getrowcount()-1, 0, true)); }
you don't need while loop. dbutils method read data resultset tablemodel.
the problem code while (rs.next)
reads first row , ignores it. the dbutils method reads rest of data.
so code should be:
rs = st.executequery(); tablemodel model = dbutils.resultsettotablemodel(rs); ...
Comments
Post a Comment