Swing mettre une image en fond d'écran

Signaler
Messages postés
14
Date d'inscription
mardi 22 juillet 2008
Statut
Membre
Dernière intervention
5 novembre 2009
-
Messages postés
5348
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 mars 2020
-
Bonjour tout le monde!

je suis entrain de créer une interface graphique en utilisant l'api swing en java sous netbeans.
mon problème est comment mettre une image comme fond d'écran dans un jFrame?

Merci d'avance.
A voir également:

4 réponses

Messages postés
5348
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 mars 2020
95
Salut,

sinon limite tu prends un bon vieux JLabel que tu places en ContentPane de la fenêtre, tu lui colles l'image et rulez...

// initialisation de la fenêtre
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(3);
frame.setSize(800, 600);
frame.setLocationRelativeTo(null);

// préparation du label avec l'image
ImageIcon icon = null;
try {
  icon = new ImageIcon(ImageIO.read(new File("img.png")));
} catch (IOException e) {
  // pb de chargement de l'image
  e.printStackTrace();
}
// version sans le stretch de l'image
//JLabel contentPane = new JLabel(icon);
// version avec stretch de l'image
JLabel contentPane = new JLabel(icon) {
  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if(getIcon() != null)
      g.drawImage(
          ((ImageIcon)getIcon()).getImage(), 0, 0, 
          getWidth(), getHeight(), null);
  }
};
// ajoute le conteneur
frame.setContentPane(contentPane);
// modification du layout
frame.getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));
// ajout de composants
frame.getContentPane().add(new JButton("Plop"));
// affichage de la fenêtre
frame.setVisible(true);






------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
97
Salut,

Il te faut surcharger la méthode paintComponent pour cà : vois ma source à ce sujet (JImagePanel).
______________________________________
DarK Sidious
Messages postés
14
Date d'inscription
mardi 22 juillet 2008
Statut
Membre
Dernière intervention
5 novembre 2009

je m'excuse mais je n'ai pas compri, est ce que vous pouvez m'expliquer un peu plus?
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
97
Salut,

Ben disons qu'il va falloir que tu mettes les mains dans le cambouis, car je ne suis pas sûr que netbeans te permette de surcharger une méthode d'un contrôle que tu ajoute par son éditeur graphique (quel idée d'utiliser un éditeur graphique aussi : ca produit un code immaintable, illisible, et ca bride les possibilités !!!).

Il te faut donc récupèrer la classe JImagePanel de ma source, l'incorporer dans ton projet, puis remplacer le composant JPanel que tu as mis par le mien, et définir l'image que tu veux afficher, et tout cà par code, car je ne pense pas que netbeans accepte d'incorporer une classe surchargée dans son interface !
______________________________________
DarK Sidious