Then, start turning the filled ones hollow at a greater rate than the images are being turned into filled rectangles. To load objects quickly, you should have a thread traversing the directories. Your program should use the ImageObserver Interface of the component used to display the helix to be notified as to when the object is loaded, when it's size is known, etc. As you load images, you should add them to the array of objects and ensure that it is sorted by timestamp, from newest to oldest. The Helix.java contains an example of how you use a custom comparator to sort an array of objects based on some data in the object.
Images are to be displayed as thumbnails.
You should determine how big each image should be, preserving the aspect ratio while setting the bigger dimension to the specified size. Remember, only the main swing thread is allowed to change or otherwise manipulate the Swing objects. This might be a good way to insert new files in the component without needing to use semaphores, for example. Your program should constantly check how long the redraw's are taking and adjust accordingly. That way, they will not see a jerk at the beginning when the first few refreshes are slow.