Foros del Web » Programación para mayores de 30 ;) » Java »

Imagen dentro de JPanel

Estas en el tema de Imagen dentro de JPanel en el foro de Java en Foros del Web. Estoy intentando meter una imagen dentro de un JPanel, para después solo tener que mover el JPanel sin tener que mover la imagen tambien. Tengo ...
  #1 (permalink)  
Antiguo 08/01/2013, 11:29
 
Fecha de Ingreso: agosto-2011
Ubicación: Montevideo
Mensajes: 44
Antigüedad: 13 años, 2 meses
Puntos: 5
Pregunta Imagen dentro de JPanel

Estoy intentando meter una imagen dentro de un JPanel, para después solo tener que mover el JPanel sin tener que mover la imagen tambien.

Tengo este código, pero no se qué es lo que estoy haciendo mal:

Código:
import java.awt.Color;
import java.awt.Container;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class mainClass extends JFrame {
	
	private static final long serialVersionUID = 1L;
	
	Container cont = new Container();
	JPanel fondo = new JPanel();
	ImageIcon Imagen = new ImageIcon("imagen.png");
	JLabel Img = new JLabel();
	
	public mainClass(){
		
		this.setBounds(100,100,640,480);
		this.setVisible(true);
		this.add(cont);
		cont.add(fondo);

		Img.setVisible(true);
		Img.setLocation(200,200);
		Img.setSize(100,100);
		Img.setIcon(Imagen);
		Img.setOpaque(true);
		
		fondo.setBounds(0,0,500,300);
		fondo.setVisible(true);
		fondo.setLocation(100,100);
		fondo.setBackground(Color.blue);
		fondo.add(Img);
		
	}
	
	public static void main(String[] args){
		mainClass window = new mainClass();
		window.setTitle("Mi título");
	}

}
  #2 (permalink)  
Antiguo 09/01/2013, 03:52
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Imagen dentro de JPanel

Hola:

El código se puede simplificar bastante.

El Container te sobra, puedes añadir el JLabel al JPanel y este directamente al JFrame. (o incluso el JLabel directamente al JFrame eliminando el JPanel).

Sobran todos los setBounds(), setSize() y setLocation() al JPanel, Container y JLabel. Si no pones un layout null al panel, al jframe y al Container, cada componente cogera el tamaño que necesite e ignorarán todas tus llamadas.

El problema (si te sale la ventana vacía), puede ser que haces la ventana visible antes de meterle todos los componentes (this.setVisible(true) es la segunda linea de tu constructor). Pasala al final del método, cuando todo esté ya construido.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: jpanel, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:26.