begin process at 2012 02 14 07:41:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Java2D et java3D

 > 

JPanel MousePressed et Freeze


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

JPanel MousePressed et Freeze

samedi 6 mai 2006 à 14:11:11 | JPanel MousePressed et Freeze

xboubix

Bonjour,
j'essaye de faire un petit programme tout simple, dans lequel un Jpanel possède une image de fond, et un gif transparent se balade dedans, lorsque je clique sur la souris (n'importe ou pour l'instant) j'aimerai qu'un second sprite s'ajoute à l'écran. Le sprite s'ajoute effectivement MAIS aprés avoir RE-cliquer pour "défreezer" l'animation qui ne se raffraichie pas mais continue à tourner en arrière plan!... Il doit y avoir un problème au niveau du Thread, mais je vois pas du tout lequel.

POuvez vous me dire d'ou ce freeze provient?  Merci!
Les sources et .class :
[ Lien ]

le code du JPanel:

import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;

public class BouncePanel extends JPanel implements Runnable {
 
 Image bidou, fond, bisou;
 float current   = 0F;
 Thread runner;
 int xPosition   = 10;
 int xMove       = 5;
 int yPosition   = 1;
 int bidouHeight = 158;
 int bidouWidth  = 110;
 int height;
    ArrayList BisousTab = new ArrayList();
 
 
 public BouncePanel() {
  super();
  Toolkit kit = Toolkit.getDefaultToolkit();
  bidou       = kit.getImage("bidou.gif");
  fond        = kit.getImage("fond.jpg" );
  bisou  = kit.getImage("bisou.gif");
  this.addMouseListener(new AnimMouseAction() );
  runner      = new Thread( this );
  runner.start();
 }
 
 
 public void paintComponent(Graphics comp) {
  Graphics2D comp2D = (Graphics2D) comp;
  height = getSize().height - bidouHeight-20;
  if (yPosition == -1)
   yPosition = height - 20;
  if ((fond != null) && (bidou != null) ) {
   comp2D.drawImage(fond,0,0,this);
  Iterator it = BisousTab.iterator ( ) ;
  while ( it . hasNext ( ) ) {
   comp2D.drawImage(bisou,(int) ( (( Bisou ) (it.next())).x), (int) ( (( Bisou ) (it.next())).y), this);
   }
   comp2D.drawImage(bidou,(int) xPosition, (int) yPosition, this);
   
   
   
  } 
 }
 
 
 public void run() {

  Thread thisThread = Thread.currentThread();
  while (runner == thisThread) {
   current += (float) 0.1;
   if ( current > 3)
    current = (float) 0;
   xPosition += xMove;
   if (xPosition > (getSize().width - bidouWidth))
    xMove *= -1;
   if (xPosition < 1)
    xMove *= -1;
   double bounce = Math.sin(current) * height; 
   yPosition = (int) (height - bounce);
   repaint();
   try {
    Thread.sleep(30);
    } catch ( InterruptedException e) {}
  }
  }
  
  class AnimMouseAction extends MouseAdapter {

   
   
  public void mousePressed(MouseEvent e) {
   //if ( runner != null) runner = null;
   BisousTab.add( new Bisou ( xPosition, yPosition));
   

   }
  
  
    }
  
  
  class Bisou {
   
   public int x;
   public int y;
   
   public Bisou(int x, int y) {
    this.x = x;
    this.y = y;
    
   }
  }
  
   
 }
 

PS: Oui, c'est un programme niais

samedi 6 mai 2006 à 14:34:17 | Re : JPanel MousePressed et Freeze

scaryman

Réponse acceptée !
Salut
Change dans ton run :
    while ( it . hasNext ( ) ) {
       Object o = it.next();
       comp2D.drawImage(bisou,(int) ( (( Bisou ) o).x), (int) ( (( Bisou ) o).y), this);
    }

et aussi je crois que ce serait mieux de mettre un mouseReleased au lieu d'un mousePressed

Voila
A++
samedi 6 mai 2006 à 15:03:58 | Re : JPanel MousePressed et Freeze

xboubix

Merci, c'est parfait :-)


Cette discussion est classée dans : public, int, fond, thread, bisou


Répondre à ce message

Sujets en rapport avec ce message

Thread et int par reference [ par gbourgeois0019 ] Bonjour,Prenons comme exemple le code suvant :// Dans un fichier :package MonPackage;public class ClasseA extends java.applet.Applet {       int Posi problème thread ne s'exécute pas [ par maymouta ] bonjour tout le monde, j'ai un problème lors d'utilisation de thread je ne maitrise pas bien cette notion mais j'en ai besoin, voici le code : public Aide Taleau Java [ par ziliass ] Bonjour, Merci de me dire si ce code est correct ou pas? quelque détails sur le code : -J'ai déjà créé les class suivantes Documents,Livre,Manuels,R forme d'onde d'un signal audio java [ par hammasaidi ] bonjour, j'ai ce code et suis bloqué que à la place représenter la forme d'onde de signal enregistrer par le microphone je veux représenter la forme d simple programme en java [ par marwenblel ] slt ,mon but est d'instancier un Tableau à 2 dimension des elements de type classa Mot que j'ai crée moi mème. j'ai fait une faible essai: public clas problème repaint() [ par moreelsc ] Bonjour, J'aimerais faire clignoter un pion sur un plateau de jeu. Pour cela je fais un setColor dans le paintComponent (1 fois sur 2 couleur blanche Java.lang.NullPointerException [ par psyckan ] Bonjour, J'obtiens cette erreur lors de l'exécution de mon programme et je ne comprend pas pourquoi : Exception in thread "main" java.lang.NullPoint appel de fonctions d'une DLL par une application Java avec JNA => AU SECOURS SVP [ par aurhas ] Bonjour, j'essaye depuis un moment déjà d'utiliser JNA pour appeler des fonctions d'une librairie mais ce n'est pas très efficace. C'est pour utiliser déclaration membre privé [ par sondos01 ] Salut à tous, Une question concernant la déclaration des variables. Je me pose la question si c'est mieux de passer par des variable intermédiaires Recuperation valeur cellule jtable [ par kwuy ] Bonjour, je debute en java et je voudrais savoir comment recuperer la valeur d'une cellule dans une jtable (cette cellule est un boolean visible sous


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales