Hola a todos, hoy os voy a enseñar como poner una imagen de fondo en un JFrame de Java
Ya vimos como poner un imagen en un JFrame pero y ¿si queremos poner una imagen de fondo? No podemos usar el método anterior.
Lo primero que necesitamos es incluir esta clase a nuestro proyecto.
import java.awt.Component; import java.awt.Graphics; import java.awt.Insets; import java.awt.image.BufferedImage; import javax.swing.border.Border; /** * @author DiscoDurodeRoer */ public class FondoSwing implements Border { private BufferedImage mImagen = null; /** * Constructor, indicamos la imagen que queremos que se redimensione * @param pImagen ImageIO.read(new File(ruta imagen)) */ public FondoSwing(BufferedImage pImagen) { mImagen = pImagen; } @Override public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { if (mImagen != null) { g.drawImage(mImagen, 0, 0, width, height, null); } } @Override public Insets getBorderInsets(Component c) { return new Insets(0, 0, 0, 0); } @Override public boolean isBorderOpaque() { return true; } }
Ahora que tenemos nuestra clase, ponemos el siguiente código después de initComponents(); del JFrame que queramos poner ese fondo.
try { FondoSwing fondo = new FondoSwing(ImageIO.read(new File("img/fondo.png"))); JPanel panel = (JPanel) this.getContentPane(); panel.setBorder(fondo); } catch (IOException ex) { JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); }
Este será el resultado:
Os dejo un proyecto de ejemplo para que lo veáis. Aquí lo puedes descargar.
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Muchas gracias :3 <3, me funcionó correctamente.
Gracias. Vas directo al grano y funciona.