begin process at 2010 02 10 09:46:15
  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 ligne en couleur d'une JTable par rapport a un boolean [ par mikomiko ] Bonjour chers collegues,je voudrais que les fonds de chaque ligne de ma JTable soit ou bleu ou rouge selon le boolean de la colonne "Dispo Location". clonage profond [ par 3615jenveux ] Bonjour,Je désirerais faire un clonage profond d'un objet "Plateau" qui contient  une unique propriété : un int[][] nommé "plateau".Or si j'ai bien ré Polymorphisme [ par super_toinou ] Bonjour a tous, y a une ptite question qui me tarraude : j ai l impression que le polymorphisme ne marche pas pour les fonctions statiques. Par e interface graphique swing [ par franfr57 ] Je vais vous décrire ma fenêtre que je désire faire :nom de la fenêtre : Portail des anciens étudiantsavec 6 onglets en haut de l'écran : Gestion des static [ par Ombitious_Developper ] salut Tous:En C/C++, si on déclare au sein d'une fonction une variable avec le modificateur "static" alors cette dernière restera "en vie" tout au lon Question de philosophie "héritages" [ par omcougar ] Bonjour, Je m'amuse en ce moment sur les transferts de données... Pour définir la tête des mes trames j'ai créé une classe statique TrameData que enco KeyListener qui ne marche pas [ par Palleas_44 ] Bonjour ;)Je débute en java et souhaiterai écrire mon tout premier jeu, le probleme c'eest pour deplacer mon personnage, ca ne marche pas !Voici mon c les Thread [ par didoux95 ] Bonjour a tous,j'ai un pb avec les thread:code:public class A {   public A(){      //la construction de l'interface graphique      Thread MonThread = Swing et Thread [ par Ombitious_Developper ] Salut:J'ai un problème de synchronisation de l'affichage du fond des objets de la classe JLabel.// Classe principale public class MainClass


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,499 sec (4)

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