Обновление изображения, содержащегося в JLabel - проблемы
Часть приложения, с которой я в настоящее время сталкиваюсь с трудностями при работе, заключается в возможности прокрутки и отображения списка изображений, по одному за раз. Я получаю каталог от пользователя, спулинга через все файлы в этом каталоге, а затем загружаю массив только jpegs и pngs. Затем я хочу обновить JLabel с первым изображением и предоставить предыдущую и следующую кнопки для прокрутки и отображения каждого изображения по очереди. Когда я пытаюсь отобразить второе изображение, оно не обновляется ... Вот что я получил так далеко:
<code>public class CreateGallery { private JLabel swingImage; </code>
Метод, который я использую для обновления изображения:
<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>
Затем в моем методе createAndShowGUI, который помещает 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>
Если вы дошли до этого уровня, первое изображение - это мой default.jpg, и как только я получу каталог и идентифицирую первое изображение в этом каталоге, произойдет сбой при попытке обновить swingImage. Теперь я попытался использовать swingImage.setVisible () и swingImage.revalidate (), чтобы заставить его перезагрузиться. Я предполагаю, что это мой tempImage = новый JLabel, который является основной причиной. Но я не уверен, как преобразовать мой BufferedImage или Image в JLabel, чтобы просто обновить swingImage.