es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El icono del JLabel no funciona, pero el setIconImage del JFrame sí.

Estoy usando VS Code y mi carpeta contiene solamente un archivo Java y una imagen.

Estaba tratando de establecer la imagen en un JLabel, así que primero accedí a la imagen con:

ImageIcon img = new ImageIcon(getClass().getResource(“img_flag.png”));

Luego lo configuré en JLabel, pero nada aparece en mi pantalla.

JLabel label = new JLabel(img);

Para confirmar que estoy accediendo a la imagen correcta, la configuré en el logotipo de la ventana y el logotipo se mostraba correctamente.

setIconImage(img.getImage());

No puedo entender por qué el JLabel no puede mostrar la imagen.

Aquí está mi código completo:

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Mylable extends JFrame{

Mylable(){

    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500,500);
    ImageIcon img = new ImageIcon(getClass().getResource("img_flag.png"));
    setIconImage(img.getImage());       //funciona
    JLabel label = new JLabel(img);     //no funciona
    add(label);
}

public static void main(String[] args)  {
    new Mylable();
}    

}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema con la posición o diseño del JLabel en el JFrame. Intenta agregar un administrador de diseño al JFrame y establecer la posición del JLabel dentro de él:

    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import java.awt.FlowLayout;
    
    public class MyLabel extends JFrame {
    
        MyLabel() {
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(500,500);
    
            // Establecer administrador de diseño
            setLayout(new FlowLayout());
    
            // Obtener imagen
            ImageIcon img = new ImageIcon(getClass().getResource("img_flag.png"));
    
            // Establecer imagen como icono para JLabel
            JLabel label = new JLabel(img);
    
            // Establecer posición del JLabel dentro del JFrame
            add(label);
    
            // Actualizar JFrame
            validate();
        }
    
        public static void main(String[] args) {
            new MyLabel();
        }    
    }
    

    Este código debería mostrar correctamente la imagen dentro del JLabel en el JFrame.

Comments are closed.