est-il possible de mettre une image en arrière plan d'une JFrame et si oui comment ?
est-il possible de mettre une image en arrière plan d'une JFrame et si oui comment ?
j'ai réussi en mettant l'image dans un label, mais comment faire pour que le label prenne toute la frame
mon code est celui-çi
ImageIcon sky = new ImageIcon(".\\sky.jpg");
JLabel e = new JLabel();
Container conteneur = getContentPane();
e.setIcon(sky);
conteneur.add(e);
peu importe la taille que je met le label refuse de prendre toute la frame
sois il manque un bout en bas ou bien en haut, pourquoi ?
Le systeme du JXLayer semble gagner les suffrages pour ce genre de choses. Tu en trouveras pas mal d'usages dans le SwingLabs.
Une approche plus directe est de créer une classe qui hérite de JPanel, d'en redéfinir la méthode paint pour qu'elle dessine l'image en arrière-plan, et de placer un de ses objets comme contentPane de la JFrame. Il ne faut pas oublier d'observer la fenêtre pour réagir aux changements de dimension de celle-ci.
Toutes les autres méthodes connues (dont la tienne, hum, désolé) sont mauvaises.
La tienne donc, par JLabel que tu places au fond n'est pas très bonne, car tu vas te retrouver devant la question de mettre quelque chose dedans, puisque je suppose que tu vas vouloir mettre autre chose qu'une image dans ta fenêtre. Un JLabel n'est pas fait pour ça. Tu pourrais mettre ton JLabel dans un système de z-index, mais enfin c'est prendre une montagne pour accoucher d'une souris.
Si tu veux tout de même continuer à titre d'exercice, je pense que ton problème vient surtout que l'image elle même ne se redimensionne pas : une image, cela a une taille, un point c'est tout ; il faut que tu recrées une autre image, avec les nouvelles dimensions, et que tu places cette nouvelle image dans ton JLabel.
Pour avoir l'avis de modification de taille de ton JLabel, utilise un ComponentListener.
tu n'a pas à t'excuser pour ça, il faut le dire quand ce qu'on fait est une mauvaise pratique.
Seulement pour le JPanel je ne m'en sis jamais servi et je débute encore dans java.
quand on fait du polymorphisme avec la méthode paint je suppose que sa ressemble à ça
public class bg extends JPanel
{
public void paint(Graphics g)
{
super.paint();
g.drawImage(image,0,0,x,y,this);
}
}
Encore là je suis loin d'être sur. Pourrais tu m'envoyer un lien qui envoie vers un site qui explique la procédure ?
Partager