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

Problema con logo en programa

Estas en el tema de Problema con logo en programa en el foro de Java en Foros del Web. Buenas, estoy creando un programa que servirá para abrir los procesos de juegos más rapidamente, como un lanzador. Para hacerlo estoy usando la layout GridBagLayout ...
  #1 (permalink)  
Antiguo 19/12/2012, 09:48
 
Fecha de Ingreso: mayo-2012
Mensajes: 29
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Problema con logo en programa

Buenas, estoy creando un programa que servirá para abrir los procesos de juegos más rapidamente, como un lanzador.

Para hacerlo estoy usando la layout GridBagLayout ayudandome con insets para hacerlo mas preciso.

Tengo creado 4 archivos, 1 de ellos creado para ver si funciona otro. (en la imagen es la ventana pequeña con el logo bien)

El problema que tengo es que en la ventana del programa no sale el logo. Pongo par que se pueda dimensionar la ventana y me doy cuenta que si la dimensiono de una manera se ve el logo en una parte, y moviendolo es como si se pusiese algo invisible delante tapandolo.

Aqui la imagen:



Las clases:

Main.java

Código:
public class Main {
	
	public static void main (String [] args){
		Laucher l = new Laucher();
		FrameLogo fl = new FrameLogo();
		
		System.out.println("Unclain Laucher 2012");
		System.out.println("http://unclain.blogspot.com/");
	}
}
Laucher.java

Código:
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextPane;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;



public class Laucher extends JFrame{
	public JButton btentrar;
	public JLabel lblbienvenido;
	public JTextPane area;
	public JLabel lbllogo;
	private Logo logo;
	
	public Laucher(){
		super("Unclain Laucher");
		this.setVisible(true);
		this.setSize(565, 440);
		this.setResizable(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		GridBagLayout gridBagLayout = new GridBagLayout();
		gridBagLayout.rowWeights = new double[]{0.0, 1.0, 0.0, 0.0, 0.0};
		gridBagLayout.columnWeights = new double[]{1.0, 0.0, 0.0, 0.0, 0.0};
		getContentPane().setLayout(gridBagLayout);
		this.validate();
		
		btentrar = new JButton("Entrar");
		GridBagConstraints gbc1 = new GridBagConstraints();
		gbc1.insets = new Insets(370, 490, 0, 20);
		gbc1.gridx = 1;
		gbc1.gridy = 2;
		gbc1.gridwidth = 0;
		gbc1.gridheight = 0;
		gbc1.fill = GridBagConstraints.BOTH;
		getContentPane().add(btentrar, gbc1);
		btentrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
			}
		});
		btentrar.setBackground(new Color(65, 163, 255));
		
		lblbienvenido = new JLabel("¡Bienvenido a Unclain Laucher!");
		lblbienvenido.setForeground(new Color(0, 78, 255));
		GridBagConstraints gbc2 = new GridBagConstraints();
		gbc2.insets = new Insets(370, 20, 0, 0);
		gbc2.gridx = 2;
		gbc2.gridy = 3;
		gbc2.gridwidth = 0;
		gbc2.gridheight = 0;
		gbc2.fill = GridBagConstraints.BOTH;
		getContentPane().add(lblbienvenido, gbc2);
		
		area = new JTextPane();
		GridBagConstraints gbc3 = new GridBagConstraints();
		gbc3.insets = new Insets(-10, 140, 80, 0);
		gbc3.gridx = 4;
		gbc3.gridy = 4;
		gbc3.gridwidth = 0;
		gbc3.gridheight = 0;
		gbc3.fill = GridBagConstraints.BOTH;
		add(area, gbc3);
		
		logo = new Logo();
		GridBagConstraints gbc_panel = new GridBagConstraints();
		gbc_panel.insets = new Insets(200, 0, 0, 0);
		gbc_panel.fill = GridBagConstraints.BOTH;
		gbc_panel.gridx = 4;
		gbc_panel.gridy = 1;
		this.add(logo, gbc_panel);
		
		//Insents: top left bottom right
		solucionElementos();
	}
	
	public void solucionElementos(){
		for(int i = 0; i < 2; i++){
			btentrar.setVisible(true);
			btentrar.setVisible(false);
			btentrar.setVisible(true);
		}
	}
}
JPanel con el logo:

Código:
import java.awt.Graphics;
import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;
import javax.swing.JPanel;


public class Logo extends JPanel{
	
	public BufferedImage logo;
	
	public Logo(){
		this.setSize(100, 100);
		cargarImagenes();
	}
	
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		g.drawImage(logo, 0, 0, null);
	}
	
	public void cargarImagenes(){
		try{
			
			logo = ImageIO.read(getClass().getClassLoader().getResource("Logo100x100.png"));
			
		}catch(Exception e){
			System.out.println("No se encontro el logo.");
		}
	}

}
FrameLogo (la clase que hice para probar el logo)

Código:
import javax.swing.JFrame;


public class FrameLogo extends JFrame{
	
	
	public FrameLogo(){
		super("Prueba");
		this.setVisible(true);
		this.setResizable(true);
		this.setSize(150, 150);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.add(new Logo());
		this.validate();
	}

}
Hay algun modo de que el JPanel con el logo este por encima de todos los elementos del programa? De esta manera no lo cubriria nada.

Y si no, hay otra manera de poner una imagen en el JFrame sin usar otro JPanel?

Gracias. ;)

Etiquetas: clase, logo, programa, 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 08:37.