Panel et bouton avec un fond en image

4/5 (21 avis)

Vue 41 693 fois - Téléchargée 2 988 fois

Description

ben je vien de faire se sample de quelque ligne pour tds qui voulai un exemple de panel avec une image en fond. ;o) et puis bon c un exmple sympa qd meme pour comprendre pourkoi surcharger une class swing... ;o)

toutes les methode static de cette class ne serve que pour l exemple elle ne sont pas utilent du tout au fonctionnement

Source / Exemple :


import java.awt.*;
import java.awt.event.*;
import java.net.*;

import javax.swing.*;

/**

  • @author ludo
*
  • /
public class PanelAvecFond extends JPanel { Image backGround = null; public PanelAvecFond( Image backGround ) { this.backGround = backGround; setOpaque( false ); } public void paint( Graphics g ) { if ( backGround != null ) g.drawImage( backGround, 0, 0,getSize().width, getSize().height, this ); super.paint( g ); } public static void main(String[] args ) { JFrame frm = new JFrame( "test panel back ground" ); frm.setBounds( 100, 100, 500, 500 ); frm.getContentPane().setLayout( new BorderLayout() ); JPanel pnl = new PanelAvecFond( loadImages( frm, ".//fond.jpg" ) ); pnl.setLayout( null );//new GridLayout( 10, 10 ) ); JButton btn = new PanelAvecFond.ButtonAvecFond( loadImages( frm, ".//btn.gif" ) ); btn.setForeground( Color.green ); btn.setText( "TOTO" ); pnl.add( btn ); btn.setBounds( 50, 50, 100, 100 ); frm.getContentPane().add( pnl, BorderLayout.CENTER ); frm.setVisible( true ); frm.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit( 0 ); } }); } private static Image loadImages( JFrame frm, String imageFile ) { try { MediaTracker mTrack = new MediaTracker( frm ); // load les image avan de les afficher Image image = frm.getToolkit().getImage( getURL( imageFile ) ); mTrack.addImage( image, 0 ); mTrack.waitForAll(); return image; } catch (Exception e) { System.out.println( " getimages : " + e ); } return null; } public static URL getURL( String file ) throws MalformedURLException { URL documentBase = new URL("file:///" + System.getProperty("user.dir") + "/"); return new URL( documentBase, file ); } public static class ButtonAvecFond extends JButton { Image backGround = null; public ButtonAvecFond( Image backGround ) { this.backGround = backGround; setOpaque( false ); } public void paint( Graphics g ) { if ( backGround != null ) g.drawImage( backGround, 0, 0,getSize().width, getSize().height, this ); // ButtonModel model = getModel(); // if ( !model.isArmed() ) super.paint( g ); } } }

Conclusion :


ben rien a ajouter ;o) faite vos test ;o)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
omel1243 Messages postés 2 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 31 octobre 2008
2 juin 2008 à 17:24
waw!!
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
6 févr. 2006 à 17:53
trop trop cool ce code je mettrai bien 10/10 mais a chaque fois j'ai : "erreur dans la notation veuillez reessayer"
speedster130 Messages postés 6 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 20 avril 2004
20 avril 2004 à 10:02
Merci pour vos réponses.
Le problème que je recontrais était, en effet, lors de l'usage de la texuture...

Cette adresse crypte mon adresse mail.
En cliquant dessus, tu pourras m'envoyer un mail :
http://cerbermail.com/?jruzfeejwQ

Merci d'avance.
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
20 avril 2004 à 08:57
Les deux images ne disparaissent donc jamais :p

B@ron {EU.BELGIUM}
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
20 avril 2004 à 08:56
Heu j'ai essayé et j'ai:
- Le menu ne disparait jamais et il a bien l'image de fond
- La seule chose qui disparait c'est lorsqu'on utilise la texture alors le texte bonjour disparait puisque noir sur noir.

Je sais pas poster mes printScreen peut-être à une mail address???
J'ai juste changer la manière dont tu charges tes images...

B@ron {EU.BELGIUM}
Afficher les 21 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.