Aktualizacja obrazu zawartego w JLabel - problemy

Częścią aplikacji, z którą obecnie mam problemy z dostaniem się do pracy, jest możliwość przewijania i wyświetlania listy obrazów pojedynczo. Dostaję katalog od użytkownika, buforuje się przez wszystkie pliki w tym katalogu, a następnie ładuję tablicę tylko plików JPEG i PNG. Następnie chcę zaktualizować etykietę JLabel za pomocą pierwszego obrazu i udostępnić poprzednie i następne przyciski, aby przewijać i wyświetlać każdy obraz po kolei. Kiedy próbuję wyświetlić drugi obraz, nie jest on aktualizowany ... Oto co mam do tej pory:

<code>public class CreateGallery
{
    private JLabel swingImage;
</code>

Metoda, której używam do aktualizacji obrazu:

<code>protected void updateImage(String name) 
{
    BufferedImage image = null;
    Image scaledImage = null;
    JLabel tempImage;

    try
    {
        image = ImageIO.read(new File(name));
    } catch (IOException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // getScaledImage returns an Image that's been resized proportionally to my thumbnail constraints
    scaledImage = getScaledImage(image, THUMB_SIZE_X, THUMB_SIZE_Y);
    tempImage = new JLabel(new ImageIcon(scaledImage));
    swingImage = tempImage;
}
</code>

Następnie w mojej metodzie createAndShowGUI, która włącza swingImage ...

<code>private void createAndShowGUI() 
{
    //Create and set up the window.
    final JFrame frame = new JFrame();

    // Miscellaneous code in here - removed for brevity

    //  Create the Image Thumbnail swingImage and start up with a default image
    swingImage = new JLabel();
    String rootPath = new java.io.File("").getAbsolutePath();
    updateImage(rootPath + "/images/default.jpg");

    // Miscellaneous code in here - removed for brevity

    rightPane.add(swingImage, BorderLayout.PAGE_START);
    frame.add(rightPane, BorderLayout.LINE_END);
</code>
<code>public static void main(String[] args) 
{
    SwingUtilities.invokeLater(new Runnable() 
    {
        public void run() 
        {
            UIManager.put("swing.boldMetal", Boolean.FALSE);
            new CreateGalleryXML().createAndShowGUI();
        }
    });
}
</code>

Jeśli dotarłeś tak daleko, pierwszym obrazem jest mój plik default.jpg, a gdy już dostanę katalog i zidentyfikuję pierwszy obraz w tym katalogu, to tam się nie powiedzie, gdy próbuję zaktualizować swingImage. Teraz spróbowałem swingImage.setVisible () i swingImage.revalidate (), aby spróbować zmusić go do ponownego załadowania. Zgaduję, że to moja tempImage = nowa JLabel, która jest główną przyczyną. Ale nie jestem pewien, jak przekonwertować moje BufferedImage lub Image na JLabel, aby po prostu zaktualizować swingImage.

questionAnswers(1)

yourAnswerToTheQuestion