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