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

enter image description here

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)); 

enter image description here


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -