Panel et bouton avec un fond en image

Soyez le premier à donner votre avis sur cette source.

Vue 41 234 fois - Téléchargée 2 946 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

Messages postés
2
Date d'inscription
dimanche 20 janvier 2008
Statut
Membre
Dernière intervention
31 octobre 2008

waw!!
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
12
trop trop cool ce code je mettrai bien 10/10 mais a chaque fois j'ai : "erreur dans la notation veuillez reessayer"
Messages postés
6
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
20 avril 2004

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.
Messages postés
351
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
9 décembre 2004

Les deux images ne disparaissent donc jamais :p

B@ron {EU.BELGIUM}
Messages postés
351
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
9 décembre 2004

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.