java - Cant refresh the shown JTable after inserts -
i have problem. i'm pretty new java , @ moment try learn basic stuff.
so created little gui textfield vor input , button fire query database query (that contain input variable).
i filled resultset result of query , want display result in jtable. tryed this:
public class appwindow extends jframe { private resultset rs = null; jtextfield textfield_where_1; jtextfield textfield_where_2; jtable tabellenspass; jbutton button; public appwindow() { this.getcontentpane().setlayout(null); this.initwindow(); protected void initwindow() { // instanzieren: textfield_where_1 = new jtextfield(); textfield_where_2 = new jtextfield(); tabellenspass = new jtable(); button = new jbutton("muh"); button.addactionlistener(new actionlistener() { public void actionperformed(actionevent arg0) { try { abfrage(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } } }); // positionen festlegen textfield_where_1.setbounds(5,10,400,25); tabellenspass.setbounds(5,40,400,100); button.setbounds(300,110,100,30); // elemente dem fenster hinzufügen: this.getcontentpane().add(textfield_where_1); this.getcontentpane().add(button); this.getcontentpane().add(tabellenspass); this.pack(); } public void abfrage() throws exception { // eingabestrings holen string eingabe1 = textfield_where_1.gettext(); select_dies_das ausgabe = new select_dies_das(); rs = ausgabe.select(eingabe1); ausgabe_tabelle(rs); } private void ausgabe_tabelle(resultset rs) { try { // rows / columns der tabelle setzen resultsetmetadata rsmd = (resultsetmetadata) rs.getmetadata(); // tabellenmodel defaulttablemodel model = new defaulttablemodel(); tabellenspass.setmodel(model); //model.firetablerowsinserted(0, 5); int columns = rsmd.getcolumncount(); // resultset zeiger zurueck setzen rs.beforefirst(); while (rs.next()) { object[] row = new object[columns]; (int = 1; <= columns; i++) { row[i - 1] = rs.getobject(i); } model.insertrow(rs.getrow() -1,row); system.out.println("miau"); } // tabellenspass.setmodel(model); tabellenspass.repaint(); } catch(exception e) { system.out.println(e); } } with abfrage() filled resultset , ausgabe_tabelle() fill jtable, shown table wont change.
i create row object[] fill data of whole row, , object insert jtable.
with initwinodw() create little gui.
can explain me why table wont refresh after inserts?
i'm thinking problem tablemodel not correctly initializated, need use public defaulttablemodel(object[][] data, object[] columnnames){...} constructor give header names :)
defaulttablemodel model = new defaulttablemodel(null,new string[]{"col1","col2"}); of course need add or remove columns model according needs, rs.beforefirst(); statement unnecessary becouse using while loop checks if resultset has row next() method of interface, if use statement, confirm resultset scrollable or an
org.postgresql.util.psqlexception: operation requires scrollable resultset, resultset forward_only. better comment line
//rs.beforefirst(); also can change model.insertrow(rs.getrow() - 1, row); statement model.addrow(row); have tried code , result

maybe should consider adding jtable jscrollpane keep visible headers, , set layouts design, this
settitle("test"); this.getcontentpane().setlayout(new boxlayout(this.getcontentpane(), boxlayout.y_axis)); jpanel data = new jpanel(); this.getcontentpane().add(textfield_where_1); this.getcontentpane().add(data); data.add(button); jscrollpane scroll = new jscrollpane(tabellenspass); data.add(scroll); scroll.setpreferredsize(new dimension(400, 100)); button.setpreferredsize(new dimension(100, 100)); textfield_where_1.setpreferredsize(new dimension(400, 25)); 
Comments
Post a Comment