java - ponerle - Establecer imágenes de fondo en JFrame
poner imagen en jlabel java (4)
¿Hay algún método disponible para establecer una imagen como fondo en un JFrame
?
No hay un método incorporado, pero hay varias formas de hacerlo. La manera más directa que puedo pensar en este momento es:
- Crea una subclase de
JComponent
. - Reemplace el
paintComponent(Graphics g)
para pintar la imagen que desea visualizar. - Establezca el panel de contenido del
JFrame
para que sea esta subclase.
Algunos ejemplos de código:
class ImagePanel extends JComponent {
private Image image;
public ImagePanel(Image image) {
this.image = image;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
}
// elsewhere
BufferedImage myImage = ImageIO.read(...);
JFrame myJFrame = new JFrame("Image pane");
myJFrame.setContentPane(new ImagePanel(myImage));
Tenga en cuenta que este código no maneja el cambio de tamaño de la imagen para que se ajuste al JFrame
, si eso es lo que quería.
Prueba esto :
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Test {
public static void main(String[] args) {
JFrame f = new JFrame();
try {
f.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("test.jpg")))));
} catch (IOException e) {
e.printStackTrace();
}
f.pack();
f.setVisible(true);
}
}
Por cierto, esto dará como resultado que el panel de contenido no sea un contenedor. Si desea agregar cosas, debe subclasificar un JPanel y anular el método paintComponent.
Puedes usar la clase de Panel de fondo . Realiza la pintura personalizada como se explicó anteriormente pero le ofrece opciones para mostrar la imagen a escala, en mosaico o en tamaño normal. También explica cómo puede usar un JLabel con una imagen como el panel de contenido para el marco.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class BackgroundImageJFrame extends JFrame
{
JButton b1;
JLabel l1;
public BackgroundImageJFrame() {
setSize(400,400);
setVisible(true);
setLayout(new BorderLayout());
JLabel background=new JLabel(new ImageIcon("C://Users//Computer//Downloads//colorful_design.png"));
add(background);
background.setLayout(new FlowLayout());
l1=new JLabel("Here is a button");
b1=new JButton("I am a button");
background.add(l1);
background.add(b1);
}
public static void main(String args[])
{
new BackgroundImageJFrame();
}
}
echa un vistazo al enlace a continuación
http://java-demos.blogspot.in/2012/09/setting-background-image-in-jframe.html