Arriere plan
matt2421
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, j'ai construis mon GUI et en dessous une surface ou mettre un arriere plan mais il n'apparait pas du tout. voici le code pour afficher l'image.
merci
try{ image = ImageIO.read(getClass().getResource("C:/Users/Ulrich/Desktop/Oc.jpeg")); }catch(IOException ex){System.out.println("Background not loaded !!!");} surface = new JPanel(){ @Override protected void paintComponent(Graphics g){ super.paintComponent(g); g.drawImage(image, 0, 0, null); //zeichnet den Hintergrund auf "Surface" } }; surface.setBorder(BorderFactory.createTitledBorder("Surface")); surface.setPreferredSize(new Dimension(width, depth)); BorderLayout layout = new BorderLayout(); setLayout(layout); add(controlPanel, BorderLayout.NORTH); add(surface, BorderLayout.CENTER); setTitle(title); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); pack(); }
merci
A voir également:
- Arriere plan
- Arrière plan - Guide
- Youtube en arrière plan - Guide
- Arriere plan pc - Guide
- Arrière-plan messenger vidéo - Guide
- Supprimer arrière plan image - Guide
1 réponse
(Re)Bonjour,
1) Il n'est pas nécessaire que surface soit un JPanel, tu peux te contenter d'un Component qui est plus haut dans la hierarchie des classes.
2) drawImage prends en dernier paramètre un ImageObserver, en effet l'image peut prendre du temps à charger, donc plutôt qu'attendre qu'elle soit prête on indique qui il faudra rappeler lorsqu'elle le sera, sinon elle ne s'affichera pas automatiquement.
3) pour le chargement de l'image je te conseilles d'utiliser Toolkit
4) le pack() doit être fait avant le setVisible(true) sinon la fenêtre peut clignoter car elle va être affichée avec sa taille par défaut avant d'être redimensionnée.
1) Il n'est pas nécessaire que surface soit un JPanel, tu peux te contenter d'un Component qui est plus haut dans la hierarchie des classes.
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
2) drawImage prends en dernier paramètre un ImageObserver, en effet l'image peut prendre du temps à charger, donc plutôt qu'attendre qu'elle soit prête on indique qui il faudra rappeler lorsqu'elle le sera, sinon elle ne s'affichera pas automatiquement.
3) pour le chargement de l'image je te conseilles d'utiliser Toolkit
4) le pack() doit être fait avant le setVisible(true) sinon la fenêtre peut clignoter car elle va être affichée avec sa taille par défaut avant d'être redimensionnée.
image = Toolkit.getDefaultToolkit().getImage( getClass().getResource("C:/Users/Ulrich/Desktop/Oc.jpeg")); surface = new Container() { @Override public void paint(Graphics g) { g.drawImage(image, 0, 0, this); } });
matt2421
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
je l'ai essayé ta methode, mais jusque la rien ne se passe!
KX
Messages postés
16761
Date d'inscription
Statut
Modérateur
Dernière intervention
3 020
Le code suivant fonctionne (je l'ai fait ce week end pour un autre programme), tu peux t'en servir comme base, l'adapter à tes besoins et voir à quoi moment ça casse...
matt2421
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
desole ! j'ai suivi tes indications mais ca ne fonctionne pas...
KX
Messages postés
16761
Date d'inscription
Statut
Modérateur
Dernière intervention
3 020
Si même avec mon code l'image ne s'affiche pas, c'est que c'est l'image le problème...
matt2421
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
dans le second code, le lien de mon image je le mets precisement ou???? peut etre il est la le probleme