¿Hay algún método disponible para establecer una imagen como fondo en un JFrame
?Configuración de imágenes de fondo en JFrame
Respuesta
No hay un método incorporado, pero hay varias formas de hacerlo. La manera más directa que se me ocurre en este momento es:
- Crear una subclase de
JComponent
. - Reemplazar el método
paintComponent(Graphics g)
para pintar la imagen que desea visualizar. - Set the content pane del
JFrame
para ser esta subclase.
un código de ejemplo:
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 se ocupa de cambiar el tamaño de la imagen para adaptarse a la 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 se traducirá en el panel de contenido no ser un contenedor. Si desea agregar cosas, debe subclasificar un JPanel y anular el método paintComponent.
En realidad, JLabel (como todos los JComponent) extiende Container. Me pregunto qué pasará si agregas algo a una etiqueta. –
realmente nada ... solo lo probé. puede agregar un JTextArea por ejemplo pero no dibuja. –
No aparece nada porque la etiqueta tiene un diseño nulo. Configure el administrador de diseño de la etiqueta y puede agregarle componentes. Solo tenga en cuenta que el tamaño del componente seguirá determinado por el tamaño de la imagen, no por los componentes agregados a la etiqueta. – camickr
Puede usar la clase Background Panel. 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();
}
}
la salida el siguiente enlace
http://java-demos.blogspot.in/2012/09/setting-background-image-in-jframe.html
- 1. Fondo JFrame transparente
- 2. Establecer el color de fondo para JFrame
- 3. precargar imágenes con imágenes de fondo CSS?
- 4. css dos imágenes de fondo
- 5. Múltiples imágenes de fondo IE8
- 6. Configuración de imágenes de fondo UIButton estiradas en el Generador de interfaz (XCode 4)
- 7. Decodifica imágenes en el hilo de fondo?
- 8. Imágenes de fondo CSS en MVC3
- 9. Múltiples imágenes de fondo en un div
- 10. Repetición de fondo limitada de CSS (varias imágenes de fondo)
- 11. Configuración de CGContext Transparente Fondo
- 12. iPhone - Configuración de fondo en UITableViewController
- 13. Java JFrame no actualiza la configuración de un botón
- 14. Posicionamiento de imágenes de fondo múltiples
- 15. Demora al cargar imágenes de fondo CSS
- 16. CSS - Sprites como imágenes de fondo
- 17. Múltiples imágenes de fondo (gradiente + sprite)
- 18. Medios consultas e imágenes de fondo
- 19. UILabel Configuración de color de fondo transparente?
- 20. Problemas de representación de imágenes de fondo en wp7
- 21. CSS - La herencia de las imágenes de fondo en capas
- 22. Lista de todas las imágenes de fondo en DOM
- 23. Tamaño óptimo de las imágenes de fondo en mosaico CSS
- 24. Imprimir imagen de fondo en IE sin habilitar "Imprimir colores e imágenes de fondo"
- 25. ¿Es posible utilizar imágenes de fondo repetitivas en sprites?
- 26. ¿Cómo puedo imprimir imágenes de fondo en FF o IE?
- 27. Las imágenes de fondo en Sass y Compass
- 28. Cómo imprimir con fuerza imágenes de fondo en HTML?
- 29. Android: configuración de ventana de fondo en la actividad iniciada
- 30. Configuración de fondo de ventana JavaDoc en Eclipse
Debe utilizar super.paintComponents() para painComponent método. – Sajad