Actualización de una imagen contenida en un JLabel - problemas
La parte de la aplicación con la que actualmente tengo problemas para trabajar es poder desplazarme y mostrar una lista de imágenes, una a la vez. Obtengo un directorio del usuario, pongo en cola a través de todos los archivos en ese directorio, y luego carga una matriz de sólo los archivos JPEG y pngs. A continuación, deseo actualizar una JLabel con la primera imagen, y proporcionar los botones anterior y siguiente para desplazarse y mostrar cada imagen por turno. Cuando intento mostrar la segunda imagen, no se actualiza ... Esto es lo que tengo hasta ahora:
<code>public class CreateGallery { private JLabel swingImage; </code>
El método que estoy usando para actualizar la imagen:
<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>
Luego en mi método createAndShowGUI que pone el swingImage en ...
<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>
Si has llegado hasta aquí, la primera imagen es mi default.jpg, y una vez que obtengo el directorio e identifico la primera imagen en ese directorio, ahí es donde falla cuando intento actualizar el swingImage. Ahora, he intentado swingImage.setVisible () y swingImage.revalidate () para intentar forzar su recarga. Supongo que es mi tempImage = la nueva JLabel que es la causa raíz. Pero no estoy seguro de cómo convertir mi BufferedImage o Image a una JLabel para actualizar solo swingImage.