domingo, 4 de diciembre de 2016

Ventana con imagen de fondo en Eclipse

Hola a tod@s!! retomamos las publicaciones en la página y lo hacemos con nuestro primer proyecto en Eclipse que consiste en crear una ventana y ponerle una imagen de fondo con
el entorno de desarrollo Eclipse neon.1

Hace tiempo vimos en esta publicación como crear una ventana con una imagen de fondo en Java con el entorno de desarrollo Bluej, hoy vamos a hacer lo mismo pero con el entorno de desarrollo Eclipse (versión neon.1) y vamos a comprobar que hay algunas diferencias. En ambas publicaciones tenemos el código fuente completo para que lo podáis usar sin ningún tipo de restricción.

Para empezar vamos a poner una captura de pantalla para que veáis como queda la ventana con la imagen de fondo:

ventana en java con eclipse
Ventana con Imagen de fondo en Eclipse

El resultado es una aplicación ejecutable que crea una ventana con una imagen de fondo que hemos seleccionado previamente (en este caso un tractor). La ventana la podemos cambiar de tamaño y la imagen se ajustará y modificará su tamaño a los nuevos valores de la ventana (ancho y alto).

El proyecto consta de 2 clases y una imagen.

Hay una clase que es la que contiene el main que se encarga de ejecutar la aplicación y crear la ventana y hay otra que se encarga de "cargar" la imagen para que pueda ser usada a la hora de crear la ventana.

La encargada de la imagen se llama PanelImagen y tiene el siguiente código:


package ese;

import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.ImageIcon;

public class PanelImagen extends javax.swing.JPanel {
public PanelImagen() {
this.setSize(400, 280);
}

@Override
public void paintComponent(Graphics g) {
Dimension tamanio = getSize();
ImageIcon imagenFondo = new ImageIcon(getClass().getResource("/imagenes/Img1.jpg"));
g.drawImage(imagenFondo.getImage(), 0, 0, tamanio.width, tamanio.height, null);
setOpaque(false);
super.paintComponent(g);
}
}


La clase que contiene el main, crea la ventana y se encarga de ejecutar la aplicación se llama JFrameConFondo y su código fuente es el siguiente:


package ese;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.border.EmptyBorder;

public class JFrameConFondo extends JFrame {

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {
try {
JFrameConFondo frame = new JFrameConFondo();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

public JFrameConFondo() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
PanelImagen p = new PanelImagen();
p.setBorder(new EmptyBorder(5, 5, 5, 5));
p.setLayout(new BorderLayout(0, 0));
setContentPane(p);
}
}


En cuanto a la imagen sólo decir que se llama Img1.jpg y que se encuentra dentro del proyecto para que pueda ser usada por las diferentes clases que la necesitan.

Os dejo también un vídeo para que podáis ver cómo la imagen se va adaptando a la ventana si vamos cambiando el tamaño de la misma:





Cualquier cosa que queráis comentar o decir es bienvenida!!

Saludos a tod@s ;)

2 comentarios: