Panel et bouton avec un fond en image

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

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.