Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe eine Bildergallerie erstellt und möchte nun, dass das Programm automatisch Bilder lädt, sobald in einem bestimmten Ordner ein neues Bild landet.
Ich habe schon eine Methode für das Bilderladen geschrieben, bei der bei jedem Methodenaufruf ein Bild mit dem Namen "bild("+i+").jpg" in einer ArrayList gespeichert wird und anchließend dann i++. Das Funktioniert soweit auch alles.
Aber wie stelle ich es an, dass Java mitbekommt, dass es ein neues Bild im Ordner gibt?
Ich würde das ganze ungern immer wieder mit nem Thread im Hintergrund abfragen. Das geht doch bestimmt eleganter...
Und von Java.nio versteh ich nichts. Ist das noch aktuell? Ich find dazu nur Beiträge von Zeiten vor FX...
Also der way-to-go wäre es einen WatchService zu implementieren (Java NIO.2) und es dem System überlassen dir die Ereignisse im FileSystem zu liefern. HIER ist ein Tutorial.
Ich hab das Tutorial nicht ganz verstanden, da es auf Englisch ist, habe mir aber einiges rausgekürtzt.
Jetzt komme ich aber nicht mehr weiter:
Der WatchService funktioniert soweit aber er will das Bild einfach nicht anzeigen. Von nem Kumpel habe ich erfahren, dass Windows manchmal ein bisschen braucht um das Bild sozusagen bereit zu stellen, aber selbst wenn ich den Thread ein paar sekunden schlafen lasse, befor er das Bild laden soll ( über die o. g. Methode) oder eine While schleife mache, die den Ladevorgang wiederholt, bis er funktioniert, lädt da nix... Über systemausgaben habe ich die Zeile lokalisiert, bei der er hakt, aber das verwirrt mich nur noch mehr...
- Die Methode newPicture() funkioniert einwandfrei, so werden eine gesetzte anzahl der Bilder bei programmstart geladen und auch per "Refresh-button", der diese methode auslöst hat immer alles geklappt.
- Der newFileListenerThread funkktioniert soweit, dass er erkennt, wenn eine neue datei im entsprechenden Ordner ist und über die systemausgabe habe ich rausgefunden, dass der thread genau bis zum methodenaufruf von newPicture() kommt und dann nicht weiter.
- Wenn newPicture() von dem Thread aufgerufen wird, spuckt das programm "bis hier1" aus, "bis hier2" aber nicht mehr. von den Fehlern wird keiner ausgespuckt...