Image de Fond JFrame
elkadiri.wd
Messages postés
127
Date d'inscription
Statut
Membre
Dernière intervention
-
elkadiri.wd Messages postés 127 Date d'inscription Statut Membre Dernière intervention -
elkadiri.wd Messages postés 127 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
pour ajouter une image de fond à ma classe JFrame j'ai trouver en cherchant au net ce code:
package packTest;
import java.awt.*;
import javax.swing.JButton;
import javax.swing.JPanel;
import com.sun.media.sound.Toolkit;
public class ImagePanel extends JPanel {
public Image image;
BorderLayout bl1= new BorderLayout();
public ImagePanel(){
image=java.awt.Toolkit.getDefaultToolkit().getImage("Hydrangeas.jpg");
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int imageWight = image.getWidth(this);
int imageHeight = image.getHeight(this);
g.drawImage (image, 0, 0, null);
repaint();
}
private void jbInit() throws Exception
{
this.setLayout(bl1);
}
}
Mais je veux l'intégrer dans ma classe JFrame et je ne sais pas comment.
voilà ma classe:
package packTest;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class TestImage extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TestImage frame = new TestImage();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public TestImage() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
}
}
pour ajouter une image de fond à ma classe JFrame j'ai trouver en cherchant au net ce code:
package packTest;
import java.awt.*;
import javax.swing.JButton;
import javax.swing.JPanel;
import com.sun.media.sound.Toolkit;
public class ImagePanel extends JPanel {
public Image image;
BorderLayout bl1= new BorderLayout();
public ImagePanel(){
image=java.awt.Toolkit.getDefaultToolkit().getImage("Hydrangeas.jpg");
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int imageWight = image.getWidth(this);
int imageHeight = image.getHeight(this);
g.drawImage (image, 0, 0, null);
repaint();
}
private void jbInit() throws Exception
{
this.setLayout(bl1);
}
}
Mais je veux l'intégrer dans ma classe JFrame et je ne sais pas comment.
voilà ma classe:
package packTest;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class TestImage extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TestImage frame = new TestImage();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public TestImage() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
}
}
A voir également:
- Image de Fond JFrame
- Image iso - Guide
- Enlever le fond d'une image - Guide
- Comment mettre une vidéo en fond d'écran - Guide
- Fond de page word - Guide
- Trame de fond word - Guide
1 réponse
Voici comment tu pourrais faire :
package packTest; import java.awt.Container; import java.awt.Graphics; import java.awt.Image; public class BackgroundContainer extends Container { private static final long serialVersionUID = 1; private final Image img; private final int width; private final int height; public BackgroundContainer(Image background) { img = background; width = img.getWidth(this); height = img.getHeight(this); } @Override public void paint(Graphics g) { super.paint(g); g.drawImage(img, 0, 0, width, height, this); super.paintComponents(g); } }
package packTest; import javax.swing.ImageIcon; import javax.swing.JFrame; public class TestImage extends JFrame { private static final long serialVersionUID = 1; private final static ImageIcon background = new ImageIcon("Hydrangeas.jpg"); public TestImage() { setContentPane(new BackgroundContainer(background.getImage())); setBounds(100, 100, 450, 300); setLayout(null); // Ajout des composants de la fenêtre setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestImage(); } }
Par défaut tu devrais avoir une hiérarchie comme ceci :
Alors si tu as mis ton image dans le dossier \packTest\Hydrangeas.jpg alors dans le code tu dois avoir new ImageIcon("packTest/Hydrangeas.jpg");
Remarque : ici je parle de la localisation des ressources par défaut (en ligne de commande), si tu utilises une configuration plus complexe, par exemple avec Eclipse, la localisation de tes ressources dépendra de ton classpath. Tu auras d'ailleurs en général tes fichiers .java dans un autre dossier que tes fichiers .class. Pour ce genre de considérations il vaut mieux ne pas mettre tes images dans le dossier de ton package, mais plutôt dans un répertoire spécifique où tu mettras toutes tes images.
Sous Eclipse tu aurais une hiérarchie comme ceci :
Avec dans le code : new ImageIcon("img/Hydrangeas.jpg");