Änderungen bemerken

W

Willi2010

Gast
Hallo. Möchte in meinem Programm eine "Speichern" Funktion anbieten, die jedoch nur aufgerufen wird, wenn sich im Programm auch etwas verändert hat. Dabei besteht das Programm aus mehreren Komponenten (JTable, JTextArea....) Gibt es eine Möglichkeit Änderungen im Hauptfenster zu erkennen?
 

Landei

Top Contributor
Du könntest eine boolesche Variable modified machen, die anfänglich und nach jedem Speichern auf false gesetzt wird. Dann an alle relevanten Komponenten einen passenden Listener hängen, der die Variable auf true setzt. Welche Listener sich eignen, weiß ich jetzt nicht aus dem Hut (vielleicht ChangeListener?), einfach ausprobieren.
 

faetzminator

Gesperrter Benutzer
Wenn du die Modifikationen speicherst, so dass man Undo und Redo machen kann, kannst du einfach die Länge dieser auslesen. Falls die Position in der Liste > 0 ist, ist aktuell eine Änderung vorhanden. Da musst du einfach darauf achten, dass man evtl. nicht die gesamte Liste immer speichern sollte (viel Speicherverbrauch).
 
T

Tomate_Salat

Gast
Handelt es sich um ein editierbares textdokument?

Java:
JTextArea area	= new JTextArea(); 
String eingabe  = leseTextAusDatei();
if(area.getText() == eingabe)
{
      speichern();
      eingabe = area.getText();
}

vllt einfach den Inhalt des Dokumentes beim öffnen speichern und vergleichen.
 
T

Tomate_Salat

Gast
Hab mir das von PHP aus angewöhnt und in C++ bin ich dabei es mir abzugewöhnen und in Java....nun ja, wie ich lustig bin.

Ich entschuldige mich im vorraus für die Frage:
warum eigentlich?
Damit will ich fragen: wo genau liegt der unterschied zwischen den beiden Vergleichsoperatoren?
 

javimka

Top Contributor
Der == Vergleich überprüft die Referenz auf die Objekte, also ob die linke und rechte Variable auf das genau gleiche Objekt verweisen.
equals überprüft den Inhalt eines Objekts, ob also das Objekt äquivalent zum übergebenen Parameter ist.
 

Landei

Top Contributor
Klassiker:
Integer.valueOf(127) == Integer.valueOf(127) //true
Integer.valueOf(128) == Integer.valueOf(128) //false
Also: == ausschließlich bei Primitiven (int, double...) verwenden, oder wenn man testen will, ob etwas wirklich dasselbe Objekt ist (ein und dieselbe Stelle im RAM, und nicht nur gleicher "Inhalt"), ansonsten equals.
 
T

Tomate_Salat

Gast
Hallo,


Auch in PHP gibt es solche sachen wie:
Code:
if ($a === $b) ...
...
MfG
Karl Heinz Marbaise

Klar ist mir bekannt, aber in PHP vergleichst du die Inhalt mittles if($a == $b) {} ;-) deswegen.

ich bedanke mich für die Nachhilfe-stunde ;-)
 

Neue Themen


Oben