miércoles, 3 de octubre de 2018

Hacer una ventana con Imagen de fondo en Eclipse Photon

En esta ocasión vamos a crear una ventana con una imagen de fondo en Java. Para ello vamos a utilizar JFrame y el entorno de desarrollo que vamos a utilizar para
ello será Eclipse en su versión Photon

Este proyecto consta de 2 clases y la imagen que queremos poner de fondo. Una clase se encarga de que podamos utilizar la imagen en nuestro proyecto, de capturarla por así decirlo para que la podamos usar. La otra clase se encarga de crear la ventana y de añadir la imagen que ha cogido la otra clase.

En este caso las clases completas con su código fuente son:


Clase Imagen, esta es la clase que se encarga de que podamos utilizar la imagen como fondo:

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

public class Imagen extends javax.swing.JPanel {

private static final long serialVersionUID = 1L;

public Imagen() {
  this.setSize(600, 400);
 }

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



Clase VentanaConFondo, esta clase se encarga de hacer la ventana y de ponerle la imagen de fondo que hemos "cogido" con la otra clase:

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

public class VentanaConFondo extends JFrame {

private static final long serialVersionUID = 1L;

public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {

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

 public VentanaConFondo() {

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setBounds(200, 200, 600, 400);
  Imagen p = new Imagen();
  p.setBorder(new EmptyBorder(5, 5, 5, 5));
  p.setLayout(new BorderLayout(0, 0));
  setContentPane(p);
 }

}


Aquí os dejo también un vídeo explicativo de como funciona:


No hay comentarios:

Publicar un comentario