Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Objekte aktualisieren

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.09.2003
    Beiträge
    8

    Objekte aktualisieren

    hallo,

    ich hab folgendes Problem:
    ich hab per ObjectInputStream ein Objekt eingelesen, und möchte nun das aktuelle Objekt (welches gerade genutzt wird) durch das eingelesene ersetzen.

    Codebeispiel (FDrawing.java):

    FileInputStream file = new FileInputStream("neues_Objekt.tmp");
    ObjectInputStream is = new ObjectInputStream(file)
    FDrawing neu = (FDrawing)is.readObject();


    Das Einlesen funktioniert wunderbar, nur wie lautet der Befehl zum ersetzen des aktuellen objekts? ("this = neu??")

  2. #2
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Wenn ich das richtig verstanden habe, dann geht das was du vorhast nicht.
    Das wäre ja, als ob ein Mensch selbst versucht im laufenden Betrieb (das nennt man Leben) sein Gehirn durch ein anderes zu ersetzen.

    Ein Objekt kann sich nicht selbst durch ein anderes ersetzen.
    this = dasNeueObjekt geht also nicht.

    Das kann nur von außerhalb durchgeführt werden.
    Analog: Gehirntransplantation durch Chirurg .
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.04.2002
    Beiträge
    112
    Wieso sollte das nicht gehen?
    Man kann, wenn es im Quelltext steht, doch auch Objekte anlegen bei z.B. nem Mausklick.
    Dann würde man es halt aus ner Datei einlesen und setzen.

    Ich denke mal, dass es sehr davon abhängig ist, was für ein Objekt es ist.
    Um was handelt es sich denn genauer?

    (Oder ich habs falsch verstanden )

    Mfg, Matflasch
    Verteilt die Macht, dass sie keinen mächtig macht!

  4. #4
    Registrierter Benutzer
    Registriert seit
    12.09.2003
    Beiträge
    8
    ok, ich habs jetzt über einen umweg gelöst. ich habe ein neues objekt erstellt, welches das andere aufruft (TDrawing ist das zu ersetzende Objekt):

    Code von FDrawing.java:

    FileInputStream file = new FileInputStream("neues_Objekt.tmp");
    ObjectInputStream ois = new ObjectInputStream(file);
    TDrawing neu = (TDrawing) ois.readObject(); //TDrawing ist das zu aktualisierende objekt

    altes_TDrawing = neu; //altes_TDrawing wurde von FDrawing angelegt

    wie bringe ich aber nun FDrawing dazu, das alte TDrawing auf das neue zu aktualisieren? hab schon kombinationen mit show() und update() probiert, hat aber nichts funktioniert :/

    PS: TDrawing enthält eine GUI, die die geladenen zeichnungen anzeigen soll
    Geändert von elitemassacre (11-05-2005 um 15:01 Uhr)

  5. #5
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Bevor du alt = neu machst musst du die "Zeichnungselemente" aus dem alten TDrawing Abjekt in das neue kopieren.
    ...

    Irgendwie kapier ich nicht was du machen willst?

    Versuch deinen Sachverhalt mal mit einfachen Worten zu erklären.
    Ich fange mal für dich an.

    - Du speicherst Objekte vom Typ TDrawing in einer Datei, in dem du einen ObjectOutputStream verwendest.
    - TDrawing ist ein <...>, und kann <...> anzeigen.
    - Das Hauptprogrogramm kann solche TDawings im Fenster anzeigen und soll diese zur Laufzeit austauschen können (speichern in Datei und laden aus Datei).
    - Du machst weiter und ergänzt die leeren Stellen <...>, bzw. änderst alles was ich geschrieben habe.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  6. #6
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Du koenntest so was wie einen Kopierkonstruktor verwenden. Du uebergibst dem alten element das neue element, das alte holt sich alle werte des neuen, ersetzt die alten werde und fertig.
    Ist aber nicht unbedingt eine sehr elegante Loesung und evtl. sehr fehleranfaellig.
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  7. #7
    Registrierter Benutzer
    Registriert seit
    12.09.2003
    Beiträge
    8
    TDrawing verwaltet zeichnungen (dreicke, kreise etc), die dann auch auf ner gui angezeigt werden. ich habe ein objectoutputstream geschrieben, was die aktuellen zeichnungen abspeichert (sprich: das ganze TDrawing-Objekt) und was es auch ohne fehler macht. nun habe ich ein laden-dialog geschrieben, welcher die abgespeicherten zeichnungen wieder laden soll. mein problem ist nun, dass er die geladenen zeichnungen zwar läd, aber nich aktualisiert (sprich: es ändert sich nichts an der gui - die alten zeichnungen bleiben trotzdem weiterhin bestehen).

    hoffe ich konnte mit dem verständnis weiterhelfen

  8. #8
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Zitat Zitat von Boron
    Bevor du alt = neu machst musst du die "Zeichnungselemente" aus dem alten TDrawing Abjekt in das neue kopieren.
    Sowohl alt als neu sind Referenzen (sprich Pointer). Es wird also überhaupt nichts kopiert, sondern nur Referenzen geändert (bzw Zeiger auf anderes Objekt gerichtet).

    Vielleicht hilft das jemandem weiter...

    MfG Bischi

    PS: Was du machen willst, hat in erster linie damit zu tun, dass du die GUI updaten musst - wie das geht (ob ein this.setVisible(true) reicht) musst du nachschauen.

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  9. #9
    Registrierter Benutzer
    Registriert seit
    12.09.2003
    Beiträge
    8
    habs mittlerweile hinbekommen. trotzdem danke für eure unterstützung!

  10. #10
    Registrierter Benutzer Avatar von RogerJFX
    Registriert seit
    13.04.2005
    Beiträge
    35
    Ich sage es jedem meiner Freunde: Java kann nur schreiben, wer auch C kann. Herrgott, dann zeigt Deine Refernenz/Pointer eben auf was "new".

    Übrigens passiert "new" immer (IMMER) auf dem Heap.

    Schon mal Symbian gehackt? Viel Spaß!

    Cheers,

    Roger
    if you can't dazzle em with brillance, baffle em with bullshit

  11. #11
    Registrierter Benutzer Avatar von RogerJFX
    Registriert seit
    13.04.2005
    Beiträge
    35
    OOOOha, sorry, ähhh...
    if you can't dazzle em with brillance, baffle em with bullshit

  12. #12
    Registrierter Benutzer
    Registriert seit
    03.04.2002
    Beiträge
    112
    Zitat Zitat von RogerJFX
    OOOOha, sorry, ähhh...
    Verteilt die Macht, dass sie keinen mächtig macht!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •