Accueil de l'archive Service proposé par Hervé AGNOUX

TOUT -|- TOUT sur le visuel -|- TOUT sur la logistique

From:           	"Herve AGNOUX" <hagnoux@mail.club-internet.fr>
To:             	java@u-strasbg.fr
Date sent:      	Tue, 20 Feb 2001 07:08:00 +0100
Subject:        	image en arriere plan
Priority:       	normal
Send reply to:  	java@u-strasbg.fr

Bonjour,

Dans un JPanel je voudrais mettre une image en arrière plan. 
Comment faut-il faire ?

Merci.


--
Hervé AGNOUX  hagnoux@mail.club-internet.fr
Faites vos sites avec des formulaires electroniques :
http://www.diaam.com

     

From:           	"Joel Matteotti" <matteotti@celium.net>
To:             	<java@u-strasbg.fr>
Subject:        	RE: image en arriere plan
Date sent:      	Tue, 20 Feb 2001 08:55:06 +0100
Send reply to:  	java@u-strasbg.fr

salut,

JPanel monjpanel = new JPanel(){
public void paint(Graphics g)
{
 super.paint(g);
 Image Background = getToolkit().getImage("Image.gif");
 g.drawImage(Background, 40, 100, this);
 repaint();
};

-----Message d'origine-----
De : Herve AGNOUX [mailto:hagnoux@mail.club-internet.fr]
Envoyé : mardi 20 février 2001 07:08
À : java@u-strasbg.fr
Objet : image en arriere plan


Bonjour,

Dans un JPanel je voudrais mettre une image en arrière plan.
Comment faut-il faire ?

Merci.


--
Hervé AGNOUX  hagnoux@mail.club-internet.fr
Faites vos sites avec des formulaires electroniques :
http://www.diaam.com

     

Date sent:      	Tue, 20 Feb 2001 11:40:20 +0100
From:           	Remi Forax <forax@univ-mlv.fr>
To:             	java@u-strasbg.fr
Subject:        	Re: image en arriere plan
Send reply to:  	java@u-strasbg.fr

Joel Matteotti wrote:
> 
> salut,
> 
> JPanel monjpanel = new JPanel(){
> public void paint(Graphics g)
> {
>         super.paint(g);
>         Image Background = getToolkit().getImage("Image.gif");
>         g.drawImage(Background, 40, 100, this);

>         repaint();

heu, le repaint ici, me parait un peux bizard, ca sent une
une recursivite infini mais comme le repaint() correspond a un
evenement,
tu viens juste d'inventer le mouvement perpetuel :)

> };

Remi

     

From:           	"Herve AGNOUX" <hagnoux@mail.club-internet.fr>
To:             	java@u-strasbg.fr
Date sent:      	Tue, 20 Feb 2001 17:03:08 +0100
Subject:        	RE: image en arriere plan
Priority:       	normal
Send reply to:  	java@u-strasbg.fr

Le 20 Feb 01, Joel Matteotti a écrit :

> 
> JPanel monjpanel = new JPanel(){
> public void paint(Graphics g)
> {
>  super.paint(g);
>  Image Background = getToolkit().getImage("Image.gif");
>  g.drawImage(Background, 40, 100, this);
>  repaint();
> };
> 

Merci, j'essaierai (sans le repaint, peut être ???). Mais il n'existe pas
de moyens pour le faire sans être obligé de créer une nouvelle classe ?
Sur un JPanel existant et dont on a pas accés au code ce n'est pas
possible ?


--
Hervé AGNOUX  hagnoux@mail.club-internet.fr
Faites vos sites avec des formulaires electroniques :
http://www.diaam.com

     

From:           	"Joel Matteotti" <matteotti@celium.net>
To:             	<java@u-strasbg.fr>
Subject:        	RE: image en arriere plan
Date sent:      	Tue, 20 Feb 2001 17:48:40 +0100
Send reply to:  	java@u-strasbg.fr

Et bah la seconde methode que j'utilise moi c'est: (mais il y en a peu
etre d'autre (je ne fait que de debuter en java)):

class BackgroundScreen extends Canvas
{
 Image Background;
 public BackgroundScreen(String s, int width, int height)
 {
  setSize(width, height);
  Background = getToolkit().getImage(s);
 }
 public void paint(Graphics g)
 {
  g.drawImage(Background, 40, 100, this);
  repaint();
 }
}

-----Message d'origine-----
De : Herve AGNOUX [mailto:hagnoux@mail.club-internet.fr]
Envoyé : mardi 20 février 2001 17:03
À : java@u-strasbg.fr
Objet : RE: image en arriere plan


Le 20 Feb 01, Joel Matteotti a écrit :

>
> JPanel monjpanel = new JPanel(){
> public void paint(Graphics g)
> {
>  super.paint(g);
>  Image Background = getToolkit().getImage("Image.gif");
>  g.drawImage(Background, 40, 100, this);
>  repaint();
> };
>

Merci, j'essaierai (sans le repaint, peut être ???). Mais il n'existe pas
de moyens pour le faire sans être obligé de créer une nouvelle classe ?
Sur un JPanel existant et dont on a pas accés au code ce n'est pas
possible ?


--
Hervé AGNOUX  hagnoux@mail.club-internet.fr
Faites vos sites avec des formulaires electroniques :
http://www.diaam.com

     

Date sent:      	Tue, 20 Feb 2001 18:32:54 +0100
From:           	Guillaume Desnoix <guillaume-desnoix@memoire.com>
To:             	java@u-strasbg.fr
Subject:        	Re: image en arriere plan
Send reply to:  	java@u-strasbg.fr

Herve AGNOUX:
> Mais il n'existe
> pas de moyens pour le faire sans être obligé de créer une nouvelle
> classe ? Sur un JPanel existant et dont on a pas accés au code
> ce n'est pas possible ?

Salut Herve,

Si tu n'as acces a rien, ce n'est pas evident ;-(. Si tu as acces au
parent, alors tu peux placer ton Panel dans un nouveau JPanel qui lui
dessinera l'image. Si tu ne peux pas remplacer le parent, alors tu peux
peut-etre ajouter le JPanel dessous et rendre ton JPanel principal
transparent.

Derniere possibilite (plus lourde), modifier l'UI du JPanel par setUI() en
utilisant la tienne. Ca devrait marcher (non teste).

Guillaume

--

// a refaire a chaque changement de LnF.
monPaneau.setUI(MyPanelUI.createUI(monPaneau));

public class MyPanelUI extends BasicPanelUI
// ici par heritage (correct pour Metal, Windows)
// mais ce serait mieux par delegation (pour Multi)
{
  private static PanelUI panelUI_;
  private static Image   image_;

  public static ComponentUI createUI(JComponent c)
  {
    if(panelUI_==null)
    {
      panelUI_=new MyPanelUI();
      image_  =c.getToolkit().getImage("mon_image.gif");
    }

    return panelUI_;
  }

  public void update(Graphics g, JComponent c)
  {
    g.drawImage(image_,c.getWidth(),c.getHeight(),this);
    paint(g,c);
  }
}

C'est fini ! Retour à l'accueil de la pseudo-archive