Mein TableEvent problem

may24

Bekanntes Mitglied
Hi zusammen,

Ich bin mir zwar (fast) sicher das diese Frage des öfteren hier auftaucht aber wie die Frage formulieren damit sie die Forumssuche versteht ... ;(

Na ja, wie auch immer hier nun das eigentliche Problem:
Ich bastele seit Tagen an einem Programm das verschiedene Werte aufnimmt, sie anhand einer speziellen Formel verrechnet und zum guten Schluß das Ganze in einer Tabelle wiedergibt.
Läßt man mal die ganzen Spielereien weg und konzentriert man sich auf's wesentliche so ist die Aufgabe wie folgt:

Es gibt drei voneinander unabhängige Objekte. Diese bestehen je aus einem JFrame, JTextField und einem JButton ("submit").

Wird nun über ein JTextField ein wert eingetragen und per Button (ActionEvent) "submitted" so nimmt erst einmal das entsprechende Object den Wert entgegen, verrechnet ihn und speichert Anfangs und Endwert in seinem JTable.
Doch damit niocht genug. Der eingelesene Wert muß and die anderen beiden Objekte weitergegeben werden die dan ihrerseits einen Wert berechnen und Anfangs + Endwert in ihren JTables speichern.

Nur wie geht das ?

Meide Idee ist, das wenn der erste JTable sich ändert, eine TableEvent von changeTableData auftritt.
Dieses Event muß den anderen Objekten irgentwie mitgeteilt werden plus dem eingelesenen Wert.
Wenn ein anderes Fenster das tut, muß es wiederum an die anderen beiden weitergeleitet werden.

Da das Ganze als eine Applikation auf nur einem Rechner läuft braucht man sich erst mal keine Sorgen um Syncronisation zu machen. So schnell ist niemand mit der Maus als daß die Events kollidieren könnten ...

Leider hab ich noch keinen Code zu der Geschichte gebastelt, da ich erst gar nicht weiß wo ich anfangen soll. ???:L
 

faetzminator

Gesperrter Benutzer
Das ist nicht ganz der richtige Ansatz. Normalerweise baut man seine Applikation nach dem MVC-Pattern. Im Model kannst du die Input- und Outputdaten speichern und berechnen. Die View zeigt - logischerweise - das GUI an. Der Controller ist das Zwischenstück, welcher die Kommunikation zwischen beiden Stücken regelt. Aber eigentlich muss dich das nicht im Detail erwähnen, denn da gibts genügend Literatur dazu :)
 

hdi

Top Contributor
Du musst deine eigentlichen Business Daten von der View entkoppeln. Stichwort MVC. Das bedeutet, dass deine Daten nicht unmittelbarer Bestandteil der jeweiligen Table(s) sein dürfen, sondern in einer eigentständigen, externen Struktur gespeichert sind:

Java:
public class BusinessModel{
    // hier hast du nun zB ne ArrayList für deine Daten, und Methoden á la addData/removeData/getData
}

Dann noch ein ListenerInterface dafür

Java:
public interface BusinessModelListener{

   public void businessDataAdded(Data d);
   public void businessDataRemoved(Data d);
}

In der Business-Model Klasse hälst du eine Liste solcher BusinessModelListener, und stellst zwei Methoden bereit um nen Listener zu adden und zu löschen. Wann immer sich was am BusinessModel ändert, d.h. es wurde addData/removeData aufgerufen, iterierst du in diesen Methoden über alle Listener die registriert wurden und rufst die im Interface definierte Methode auf.

Soweit hat das erstmal nix mit Tables zu tun. Du hast jetzt einfach eine Datenstruktur, welche deine Business Daten speichert, und kannst über das Listener-Interface beliebige Instanzen deiner Applikation dort registrieren, damit sie über Änderungen benachrichtigt werden und dann jeweils irgendwie darauf reagieren können.

Für die einzelnen Tables implementierst du dann nun ein TableModel, welches das BusinessModel auf den JTable mappt. Außerdem implementieren diese TableModels das BusinessModelListener Interface. In deiner Applikation registrierst du diese Models dann am BusinessModel. Ein Beispiel für einen Table würd dann so aussehen:

Java:
public class Table1Model extends DefaultTableModel implements BusinessModelListener{
 
        @Override
        public void businessDataAdded(Data d){
            add(d); // == super.add(d) == DefaultTableModel#add(Object)
        }

        public void businessDataRemoved(Data d){
            remove(d); // == super.remove(d) == DefaultTableModel#remove(Object)
        }
}

Du kannst jetzt noch diverse Methoden des DefaultTableModel überschreiben, um zB festzulegen wieviel Spalten die Table hat, wie du Spalten heißen, usw.

D.h. der einzige Unterscheid zwischen den 3 TableModels ist dass sie halt die Daten unterschiedlich anzeigen. Du kannst natürlich auch filtern usw, aber dann musst du halt bei businessDataAdded/Removed ne komplexere Logik einbauen und ermitteln ob du diesen Datensatz eigentlich in der jeweiligen Tabelle drin haben willst.

So, und deine Komponente mit JFrame, Textfeld und Submit Button sollte nun unabhängig von irgendeiner Table sein. Sie hat nur ne Referenz auf das BusinessModel und beim submit rufst du halt zB auf:
businessModel.addData(...);

Wenn du die addData Methode in der BusinessModel-Klasse nun so implmentiert hast wie ich oben beschrieben hab, werden automatisch alle 3 Tables darüber benachrichtigt dass es neue Daten gibt. Was sie mit dieser Info anfangne, also wie sie das weiterverarbeiten, entscheidest du eben im jeweiligen TableModel.

Beim Initialisieren deiner App sieht das ganze also etwa so aus:

Java:
BusinessModel businessModel = new BusinessModel();
Table1Model t1Model = new Table1Model();
Table2Model t2Model = new Table2Model();
Table3Model t3Model = new Table3Model();
businessModel.addBusinessModelListener(t1Model);
businessModel.addBusinessModelListener(t2Model);
businessModel.addBusinessModelListener(t3Model);
JTable t1 = new JTable(t1Model);
JTable t2 = new JTable(t2Model);
JTable t3 = new JTable(t3Model);
CreateDataPanel createData = new CreateDataPanel(businessModel);

So in etwa. Man strebt halt einfach eine möglichst lose Kopplung an, also das BusinessModel sollte unabhängig von irgendwelchen Tables funktionieren.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
dennis_lnz Klassen Wie kann ich mein Java Textadventure verbessern, um ein Klassendiagramm zu erstellen? Java Basics - Anfänger-Themen 9
J Größter gemeinsamer Teiler: mein Code Java Basics - Anfänger-Themen 6
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
J Kann ich mein Programm so schreiben? Java Basics - Anfänger-Themen 4
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4
S Brauche hilfe in Java [Fehler in mein Code]? Java Basics - Anfänger-Themen 2
S Wie ende ich mein Pogrammierung? [Hilfe] Java Basics - Anfänger-Themen 1
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Mein Programm beendet sich ohne mein Zutun Java Basics - Anfänger-Themen 9
A Eine Krone in der Textausgabe - Mein Code Java Basics - Anfänger-Themen 11
M Warum berechnet mein Primzahlenprog zu hohe Zahlen nicht? Java Basics - Anfänger-Themen 20
M OOP Mein erstes Textadventure... Java Basics - Anfänger-Themen 3
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
L Mein Taschenrechner lässt sich plötzlich nicht mehr öffnen Java Basics - Anfänger-Themen 5
x-tshainge Mein Programm lässt sich nicht Starten Java Basics - Anfänger-Themen 8
W Warum läuft mein Programm nicht? Java Basics - Anfänger-Themen 14
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 12
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 6
W Ist mein Struktogram richtig erstellt worden? Java Basics - Anfänger-Themen 4
W Erste Schritte Warum funktioniert mein Programm nicht ? ~if Anweisung~ Java Basics - Anfänger-Themen 4
A Erste Schritte Mein Programm erkennt die variable EinAus.readInt nicht Java Basics - Anfänger-Themen 15
N Warum terminiert mein Programm nicht? Java Basics - Anfänger-Themen 13
G Wie kann ich mein Quellcode als Programm vom desktop starten? Java Basics - Anfänger-Themen 1
P Wie kann ich mein Programm zu einer App umwandeln? Java Basics - Anfänger-Themen 4
M Mein erstes Programm Java Basics - Anfänger-Themen 3
A Mein 1x1 Programm funktioniert nicht? Java Basics - Anfänger-Themen 2
G Input/Output Wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
G Variablen Was ist mein Fehler? Java Basics - Anfänger-Themen 2
C Warum funktioniert mein If Statement nicht richtig? Java Basics - Anfänger-Themen 18
B Drucken: Default Paper von Drucker? Mein Drucker druckt falsch Java Basics - Anfänger-Themen 3
W Compiler-Fehler Fehler - <identifier> expected, wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
stylegangsta Input/Output Hat eclipse eine Macke oder mein Code Array Datei einlesen Java Basics - Anfänger-Themen 5
M Mein erstes Java Programm Java Basics - Anfänger-Themen 5
S Wieso wird mein JFrame transparent dargestellt? Java Basics - Anfänger-Themen 5
N mein RegEx Java Basics - Anfänger-Themen 2
N Mein Bubblesort sortiert mein Array nicht Java Basics - Anfänger-Themen 2
W Wie hat mein Lehrer das gemacht. Java Basics - Anfänger-Themen 2
Z Klassen Warum wird mein Objekt nicht erkannt? Java Basics - Anfänger-Themen 2
J Erste Schritte Zweithöchster Wert eines Arrays herausfinden - warum klappt mein Code nicht? Java Basics - Anfänger-Themen 3
A Wie kann ich mein Programm noch effizienter machen? Java Basics - Anfänger-Themen 1
C Mein Video zu Java Grundlagen Java Basics - Anfänger-Themen 8
T Eclipse kennt mein Button nicht... Java Basics - Anfänger-Themen 5
J Wo liegt nur an dieser einfachen Bedingung mein Fehler? Java Basics - Anfänger-Themen 8
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
D Brauche Hilfe für mein übungsprogramm Java Basics - Anfänger-Themen 16
T Mein String in ein JLabel stecken Java Basics - Anfänger-Themen 2
T mein erstes Java projekt Java Basics - Anfänger-Themen 8
H Kann ich mein Programm vereinfachen? Java Basics - Anfänger-Themen 3
J Methoden Wo ist mein Fehler ?! Java Basics - Anfänger-Themen 9
1 Mein erstes Programm, HELP!! Java Basics - Anfänger-Themen 2
R .txt in mein Javaprogramm hineinschmelzen Java Basics - Anfänger-Themen 6
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
E Mein erstes Java Projekt - Sauberer code? Java Basics - Anfänger-Themen 28
S Mein Code is unübersichtlich - besseren Stil Java Basics - Anfänger-Themen 6
D Mein erstes Programm flackert Java Basics - Anfänger-Themen 5
H Ich kann mein Java Programm Test.class nicht ausführen Java Basics - Anfänger-Themen 6
H Probleme mein Ausführen der .class (Ubuntu JDK6) Java Basics - Anfänger-Themen 2
C Boolsche Ausdrücke - Wo ist mein Fehler? Java Basics - Anfänger-Themen 14
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
M Warum wird mein Icon bei den JTree Nodes nicht angezeigt? Java Basics - Anfänger-Themen 7
K Mein Programm... Heute: Settings-Datei in .jar speichern und auslesen Java Basics - Anfänger-Themen 9
M Kann mein Java Programm nicht starten Java Basics - Anfänger-Themen 6
V Mein erster Konstruktor Java Basics - Anfänger-Themen 3
S GaussJordan in Java, wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
B Methoden Mein erstes Programm - und gleich Probleme Java Basics - Anfänger-Themen 6
O Warum terminiert mein Programm nicht!? Java Basics - Anfänger-Themen 15
U2nt Mein Chat Java Basics - Anfänger-Themen 10
S Wo ist mein Fehler? Java Basics - Anfänger-Themen 2
M Sammlung von Anfängerfragen für mein erstes Programm Java Basics - Anfänger-Themen 15
I OOP This-Referenzs > wo liegt mein Denkfehler? Java Basics - Anfänger-Themen 24
L Hashtable nicht wirklich geeignet für mein Vorhaben? Java Basics - Anfänger-Themen 3
W ArrayListe , Wo ist mein Fehler? Java Basics - Anfänger-Themen 6
H wie bekomm ich ein Foto in mein Programm rein? Java Basics - Anfänger-Themen 8
M Mein Externes Programm startet nicht Java Basics - Anfänger-Themen 13
M Timer unterbrechen? Wo ist mein Thread? Java Basics - Anfänger-Themen 2
S wieso ist mein Code falsch? Java Basics - Anfänger-Themen 2
S Mein Computer kennt "javac" und "java" nicht mehr! Java Basics - Anfänger-Themen 6
B XML? Für Uhrzeit und Datum für mein HP? Java Basics - Anfänger-Themen 6
JeromeM90 Mein Java Applet zeitverzögern ? Java Basics - Anfänger-Themen 2
Developer_X Mein erster Internet Explorer Java Basics - Anfänger-Themen 14
B könnte nochmal jemand über mein Projekt schauen? Java Basics - Anfänger-Themen 4
J Mein Objekt will nicht! Java Basics - Anfänger-Themen 2
Screen Scanner Arrays wo liegt mein Fehler? Java Basics - Anfänger-Themen 11
F.S.WhiTeY Java RegEx Will nicht so wie ich will. Wo ist mein fehler ? Java Basics - Anfänger-Themen 3
GambaJo Brauche Bewertung + Tipps für mein kleines Projekt Java Basics - Anfänger-Themen 4
W ich und mein erster Veresuch hilfe Java Basics - Anfänger-Themen 23

Ähnliche Java Themen

Neue Themen


Oben