IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

[AWT] paint() et ImageObserver


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut [AWT] paint() et ImageObserver
    Bonsoir à tous et toutes,
    Voilà, j'ai un petit problème pour modifier le background de mon Panel, je voudrai donc utiliser la méthode paint() pour pouvoir peindre ce background avec une image, le problème est qu'il me faut un ImageObserver pour utiliser la méthode drawImage. J'ai été voir l'API tout ça, voir d'autres solutions utilisant cette méthode, mais dans ces autres méthodes ils utilisent ''this'' (comme dans le code ci-dessous). Mais cela génère une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Exception in thread "main" java.lang.NullPointerException
    	at interfaceContainer.MenuGauche.paint(MenuGauche.java:38)
    	at interfaceContainer.MenuGauche.<init>(MenuGauche.java:52)
    	at interfaceContainer.InterfaceCard.getTaskPane(InterfaceCard.java:102)
    	at interfaceContainer.InterfaceCard.<init>(InterfaceCard.java:66)
    	at interfaceContainer.InterfaceCont.getJpAdmin(InterfaceCont.java:126)
    	at interfaceContainer.InterfaceCont.<init>(InterfaceCont.java:46)
    	at projet.Test.main(Test.java:108)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    	public void paint(Graphics g, String path){
    		Image img = getToolkit().getImage(path);
    		//ImageObserver ??
    		g.drawImage( img, 0, 0, 400, 150, this ); 
     
    		super.paint(g);
            }
    	public MenuGauche(InterfaceCard princip){
            //implements JXTaskPaneContainer
    		super();
     
    		this.principale=princip;
     
    		this.setMinimumSize(new Dimension(200,600));
    		this.setMaximumSize(new Dimension(200,600));
    		this.setPreferredSize(new Dimension(200,600));
     
    		Graphics g=this.getGraphics();
    		this.paint(g, "images/backMenuGauche.png");
    		...
            }
    Merci d'avance pour votre aide,
    Arkh.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Et ta classe MenuGauche étend quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics g=this.getGraphics();
    Il ne faut jamais utiliser le Graphics retourné par getGraphics() !

    Et ton code est mal foutu car tu vas essayer de récupérer l'image à chaque fois que ton composant se redessine alors qu'il ne faut le faire qu'une seule fois.

    Utiliser un ImageObserver est utile quand ton image n'est pas déjà chargée en mémoire (par exemple obtenue avec Toolkit) car ca permet d'être prevenu quand elle le saura et de procéder à un réaffichage. Par contre dans les autres cas ça a tendace à ralentir l'affichage.
    Si ton image est déjà chargée (par exemple obtenue avec ImageIO ou ImageIcon), tu peux utiliser null comme valeur de l'ImageObserver.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Rah je ne vois vraiment pas comment faire alors, je voudrai juste qu'une image s'affiche dans un JPanel (ou JXPanel), ce panel que j'utiliserai comme bannière à mon application :/

Discussions similaires

  1. Chaine d'appel de paint(), java.awt
    Par Cbonniot dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 22/12/2009, 11h12
  2. [AWT] Peut-on choisir de lancer la méthode paint()
    Par noobiewan kenobi dans le forum Débuter
    Réponses: 16
    Dernier message: 28/07/2005, 16h41
  3. [info] A quoi sert ImageObserver ?
    Par FrigoAcide dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 22/03/2004, 17h20
  4. [TP]Paint en Pascal
    Par Giovanny Temgoua dans le forum Turbo Pascal
    Réponses: 17
    Dernier message: 03/12/2003, 22h35
  5. [awt][dialog]
    Par Ultra-FX dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 06/11/2002, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo