Des méthodes sont-elles disponibles pour définir une image comme arrière-plan dans une variable JFrame
?
Il n'y a pas de méthode intégrée, mais il y a plusieurs façons de le faire. La manière la plus simple à laquelle je puisse penser pour le moment est la suivante:
JComponent
.paintComponent(Graphics g)
pour peindre l'image que vous souhaitez afficher.JFrame
sur cette sous-classe.Quelques exemples de code:
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));
Notez que ce code ne gère pas le redimensionnement de l'image pour l'adapter à JFrame
, si c'est ce que vous souhaitiez.
Essaye ça :
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);
}
}
En passant, le volet de contenu ne sera pas un conteneur. Si vous souhaitez ajouter des éléments, vous devez sous-classer un JPanel et substituer la méthode paintComponent.
Vous pouvez utiliser la classe Background Panel . Il effectue la peinture personnalisée comme expliqué ci-dessus, mais vous offre des options pour afficher l'image à l'échelle, en mosaïque ou en taille normale. Il explique également comment utiliser un JLabel avec une image comme volet de contenu du cadre.
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();
}
}
consultez le lien ci-dessous
http://Java-demos.blogspot.in/2012/09/setting-background-image-in-jframe.html