miércoles, 8 de abril de 2015

Poner una imagen de fondo a una ventana en Java

En esta entrada vamos a crear una ventana en Java con Bluej pero a diferencia de la entrada anterior en la que creábamos una ventana con el fondo negro en esta ocasión vamos a crear una ventana con JFrame y le vamos a poner una imagen de fondo.

Para añadir una imagen a un JFrame en Java tenemos muchísimas opciones, podemos usar un JPanel, JLabel, etc. Aquí vamos a usar la que a mi modo de ver es la mas sencilla y que con pocas líneas de código nos permitirá tener nuestra ventana con
nuestro fondo de una manera bastante rápida.

Para empezar tenemos que importar los paquetes swing y awt que usaremos para construir nuestra ventana.

Una vez importada crearemos un único campo que será de tipo JFrame y se llamara vent.

Seguidamente en el constructor tendremos un único método que será el encargado de crear la ventana y que se llama crearVentana.

Ya en el método crearVentana tenemos "lo importante" por así decirlo. Tenemos una primera línea que sirve para crear la ventana y ponerle nombre (el nombre que aparece en la parte superior de la ventana). En la siguiente línea del método damos tamaño a la ventana, cogemos el tamaño de la foto que queremos poner, podríamos hacerlo de forma automática pero lo hacemos manualmente por si quisiéramos que la ventana fuera mas ancha que la imagen para poner botones a los lados o lo que se nos ocurriera. Ya en la siguiente línea del método es donde podemos la imagen en el JLabel, con una linea sola añadimos al contenedor de la ventana un JLabel que a su vez tiene una imagen que conseguimos con new ImageIcon. Las siguientes líneas hasta el final del método no necesitan explicación con los comentarios que tienen es suficiente para saber que hacen.

Os pongo una captura de pantalla de cómo queda y el código fuente completo para que lo podáis usar. Es importante que en la carpeta donde creéis el proyecto tengáis una carpeta donde guardar la foto que vais a usar como fondo. De todas formas os pongo el código fuente debidamente comentado para que lo podáis entender con un aviso importante al final, cualquier cosa no dudéis en ponerla en los comentarios.

cambiar el fondo de una ventana con una imagen personalizada
Ventana con una imagen de fondo

Código Fuente:


//paquetes que importamos para poder usar elementos gráficos en Java
import javax.swing.*;
import java.awt.*;

public class VentanaConFondo 
{
    private JFrame vent;//variable vent de tipo JFrame

    public VentanaConFondo()
    {
        crearVentana();//método que se encarga de crear la Ventana
    }

    private void crearVentana()
    {

        vent = new JFrame ("Ventana de JuegoSoftware.com con fondo");//nombre que toma 
        la ventana
        vent.setSize(900,592);//tamaño de la ventana, cogemos el tamaño de la imagen que 
        vamos a poner en el JLabel por lo que hemos explicado más arriba
        vent.setContentPane(new JLabel(new ImageIcon("Imagenes/Img1.jpg")));//añade una 
        imagen a un JLabel para que aparezca de fondo de la ventana
        vent.setLocationRelativeTo(null);//ventana centrada en pantalla
        vent.setLayout(null);//para que no acomode los elementos y los podamos poner donde         queramos en caso de que los hubiera
        vent.setResizable(false);//para que no se pueda cambiar de tamaño la ventana
        vent.setVisible(true);//para que la ventana visible
        vent.setDefaultCloseOperation(vent.EXIT_ON_CLOSE);//para que se cierre al salir
    }

}


***Muy Importante***

vent.setContentPane(new JLabel(new ImageIcon("Imagenes/Img1.jpg")));

Para que funcione correctamente tenemos que tener en la carpeta del proyecto una carpeta que se llame Imagenes y que esta tenga dentro una imagen que se llame Img1.jpg, de todas formas podemos cambiarlo en el programa si queremos poner otros nombres.

Atención también al tamaño de la ventana vent.setSize(900,592); debe ser igual que el de la imagen que vayamos a usar, si la imagen es más pequeña o mas grande la ventana no se ajustará, en próximas entradas pondremos el código para que la ventana se adapte a la foto pero ahora tenemos que poner nosotros en el código el tamaño de la foto que vamos a usar.

Cuidado también con los comentarios, al copiar el código aquí se descolocan un poco y podríais tener problemas al pegarlos en vuestro entorno, colocándolos bien una vez los peguéis o borrándolos no hay problema.

4 comentarios:

  1. Respuestas
    1. gracias a ti, cualquier cosa no dudes en comentar!! ;)

      Eliminar
  2. yo quiero saber como ajustar a la ventana :(

    ResponderEliminar
    Respuestas
    1. Hola, para cambiar el tamaño de ventana a un tamaño fijo con vent.setSize() lo puedes hacer, sólo tienes que poner el ancho y el alto que quieres que tenga. Si lo que quieres es poder cambiar el tamaño manualmente lo que tienes que hacer es cambiar false por true en este método vent.setResizable(false) para que quede así: vent.setResizable(true)

      Eliminar