JDBC + dynamischer JTable - Spalten problem

  • Themenstarter Themenstarter musk
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

musk

Gast
Habe ein Programm gebaut das über ne MySQL datenbank daten holen soll, allerdings variabel, weder spalten- noch zeilenanzahl sind vorher gegeben (Beim ersten öffnen klappt es, beim klicken eines buttons und gleichzeitiger erstellung eines neuen fensters auch) aber eine schon vorhandene jtable zu updaten macht er nicht. kleinere probleme hab ich noch mehrere, aber das is alles unwichtig. Ich sitze jetzt seit Tagen an dem Problem des Aktualisierens der JTable und komme einfach nich dahinter. habe schon etliche ideen in foren usw. gelesen aber ich raffe es nicht. Wenn mir jemand helfen könnte wäre das super nett.

Also da es sich schon um einige Klassen handelt hab ich ne .rar datei draus gemacht und auf mein webspace gepackt

www.team-empyreum.com/jtable.rar

hoffe das is ok, ansonsten kann ichs auch gerne nochmal anders machen.
Also denke es ist anhand des Programmes leicht zu sehen was das Problem ist.

Wie gesagt es geht darum die JTable nach dem Holen einer neuen Tabelle bzw. Datenbank zu aktualisieren ohne eine neue JTable in einem neuen Fenster zu erstellen. (ist im moment im programm so um zu zeigen das es so funktunioniert).

Vielen Dank im Voraus!!!
 
Wahnsinn so ein unnötig großes Programm,
das hat absolut gar nix mit der DB zu tun, genauso könntest du einfach ein neues String-Array als Datenmodell nehmen,
dazu noch Layout, Menu, usw.

und dann noch diese verrücke Konstruktion mit statischen Variablen usw.,
da wirst du irgendwann nicht mehr durchsehen..

---------

dort wo du im Moment ein neues Fenster erzeugst muss
Code:
TableModel m = meinTable.getModel();
TableSorter t = (TableSorter) m;
t.fireTableStructureChanged();
hin
 
Vielen Dank schonmal für deine Antwort, ich krieg aber mit der Lösung leider ne ArrayIndexOutOfBounds Meldung...

Ja hast Recht ich sag ja sind viele Sachen im Programm die zu komplex sind und auch viel leichter zu lösen sind, aber ich würds trotzdem gerne mal zum Laufen kriegen bevor ich dann anfange es zu vereinfachen.
 
Sorry, ich revidiere was ich gesagt habe, update läuft mit deinem code, Vielen vielen Dank.

Folgendes hab ich anstelle des Fensters eingefügt:

Code:
TableModel jtab = new JTableData();
            meinTable.setModel(jtab);
            TableSorter t = (TableSorter) jtab;
            t.fireTableStructureChanged();


Jetzt krieg ich aber leider das hier:

java.lang.ClassCastException
at jtable.JTableOrdner$ActionAdapter.actionPerformed(JTableOrdner.java:147)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
 
Hm mir is schon klar warum er diese ClassCastException wirft, das Problem is halt sobald ich setModel bzw TableModel auf den sorter setze kommt ne arrayoutofboundexception im TableSorter.
 
dein Code ist zu ärgerlich um da was zu retten zu versuchen 😉

lasse das TableModel jtab = new JTableData(); usw. weg,

du behälst einfach die bisherige Tabelle mit dem bisherigen Model,
das Model greift ja auf die geänderten statischen Variablen zu,
also ist das alte Model nicht schlechter als das neue

also:
nur DB-Aufruf
und nur
fireTableStructureChanged();
was man vielleicht auch direkt auf die JTable rufen kann,
jedenfalls keine neuen Models oder so erzeugen
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben