Ergebnis 1 bis 10 von 10

Thema: ImageResizer (Java)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von Jesus_666 Beitrag anzeigen
    Dem Programm fehlt ein Statusbalken, der anzeigt, was es gerade tut. Dann würde man sich auch nicht wundern, warum das Bild nicht geladen wird...
    Gute Idee!
    Allerdings habe ich das gerade versucht, aber ziemliche Probleme gehabt, Swing dazu zu bringen, den angezeigten Text zu korregieren, bevor die Aktion abgeschlossen ist. Mittels repaint() kann man das nur in die EventQueue einreihen, aber die wird erst abgearbeitet, sobald nichts anderes mehr läuft. Und wenn man's mit update() macht (was man nicht soll), kommt plötzlich eine Exception beim Erstellen des Bilds.

    Aber falls jemand weiß, wie man das machen könnte, kann's derjenige ja einbauen. Als Starthilfe kann man das hier verwenden, einfach alle Vorkommnisse von "// Repaint status label" ersetzen.

  2. #2
    Mein erster Gedanke wäre da Multithreading - du läßt das Bild in einem separaten Thread durchrechnen, der sich dann irgendwann zurückmeldet. Wenn du Anzeige- und Berechnungslogik voneinander trennst können sie sich nicht (ganz so leicht) gegenseitig auf die Füße treten.

    Geändert von Jesus_666 (25.09.2007 um 15:02 Uhr)

  3. #3
    Schlagt mich, wenn es falsch ist, aber iirc legt Swing eh einen eigenen Thread für sich an. Daran kanns also eher nicht liegen.

  4. #4
    Zitat Zitat von DFYX Beitrag anzeigen
    Schlagt mich, wenn es falsch ist, aber iirc legt Swing eh einen eigenen Thread für sich an. Daran kanns also eher nicht liegen.
    Bringt aber nicht viel, wenn man seine interne Logik an Funktionen wie redraw() knüpft. Ich bin nicht der große Swing-Experte, aber an sich sollte es machbar sein, daß das Programm irgendeine Berechnung völlig unabhängig vom aktuellen Zustand des UI durchführt.

  5. #5
    Zitat Zitat von Jesus_666 Beitrag anzeigen
    Mein erster Gedanke wäre da Multithreading - du läßt das Bild in einem separaten Thread durchrechnen, der sich dann irgendwann zurückmeldet. Wenn du Anzeige- und Berechnungslogik voneinander trennst können sie sich nicht (ganz so leicht) gegenseitig auf die Füße treten.
    OK, verstehe was du meinst. Vielleicht versuche ich das ja demnächst mal, müsste man aber einiges ändern...

    Edit: Habe es jetzt probiert, aber das Problem bleibt bestehen. Anscheinend sind BufferedImages nicht thread-safe. :-/ Oder ich hab' was falsch gemacht, mit Threads arbeite ich zu selten. <__<
    Jedenfalls kommt jetzt jedes Mal, wenn ich jetzt das Bild verkleinern will, eine Exception von Zeile 315/334/369/388, besagend, dass der image type 0 unbekannt ist. Wie man sich leicht an den entsprechenden Stellen vergewissern kann, kann das Problem kaum in normaler Weise entstehen. Entsteht anscheinend bloß, wenn man vom falschen Thread in Swingkomponenten rumpfuschen will.

    Falls jemand meinen Versuch begutachten will: hier bitte.

    Geändert von drunken monkey (25.09.2007 um 22:51 Uhr)

Berechtigungen

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