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

2D Java Discussion :

[Image]Image et déplacements


Sujet :

2D Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 49
    Points : 41
    Points
    41
    Par défaut [Image]Image et déplacements
    bonjour je voudrais afficher une image et ensuite via des évènement claviers la déplacer.

    Pour le moment je fais cela avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     public void paintComponent(Graphics g)
      {
    	super.paintComponent(g);
    	g.drawImage(tete,x,y,this);
     
      }
     
      public void setPosition(int x1, int y1)
      {
    	  x=x1;
    	  y=y1;
     
    	  repaint();
      }

    il faut savoir que cette méthode est dans une class qui étends JPanel.
    Et apparamment quand j'appel setPosition avec des valeurs élevées on dirait que c'est le JPanel qui bouge et non l'image?

    Si quelqu'un peut m'éclairer ou me proposer une nouvelle méthode?


    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    Petite question, x et y sont déclarés par toi ou tu as repris ceux de la classe mére ?
    JHelp

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 49
    Points : 41
    Points
    41
    Par défaut
    il sont déclarés par moi

  4. #4
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    Dans ce cas ca devrait marcher, tu peut nous en dire un peu plus ?
    JHelp

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 49
    Points : 41
    Points
    41
    Par défaut
    Voici mes classes ca va être plus simple que d'expliquer:

    La classe serpent qui affiche le l'image serpent:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.border.*;
     
     
    public class Serpent extends JPanel {
    	protected Image tete;
    	protected Image corps;
    	protected int x=0;
    	protected int y=0;
     
      public Serpent()
      {
    	tete=Toolkit.getDefaultToolkit().getImage("tete.png");
     
     
    	setSize(50,50);
    	setBackground(Color.white);	 
    	setBorder(new BevelBorder(-20)); 
      }
     
      public void paint(Graphics g)
      {
    	super.paint(g);
    	g.drawImage(tete,x,y,this);
     
      }
     
      public void setPosition(int x1, int y1)
      {
    	  x=x1;
    	  y=y1;
    	  System.out.println("x: "+x+"y:"+y);
    	  update(getGraphics());
      }
     
      public int getX()
      {
    	return x;	  
      }
     
      public int getY()
      {
    	return y;	  
      }
     
    }
    Voici l'interface IHM qui étends JFrame et qui contient les listeners notamment le listener pour déplacer l'image:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;
     
    public class Interface extends JFrame implements ActionListener,KeyListener{
    	protected BorderLayout layout;
    	protected JPanel panel;
    	protected Image ima;
    	Serpent s=new Serpent();
     
    	public Interface(String titre){
    		ima= getToolkit().getImage("tete.png");
    		this.setTitle(titre);
    		panel = new JPanel();
    		this.setIconImage(ima);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setResizable(false);
    		setSize(this);
    		setLocation(this);
    		setJMenuBar(createMenu(this));
    		//getContentPane().setLayout(layout);
    		getContentPane().add(s,layout.CENTER);
    		addKeyListener(this);
     
     
     
     
    		this.setVisible(true);
    		System.out.println(s.getSize());
    		System.out.println(getContentPane().getSize());
    	}
     
     
    	 public void keyPressed(KeyEvent e)
      {
     
    	if(e.getKeyCode()==KeyEvent.VK_UP)s.setPosition((s.getX())+10,0);
     
     
      }
     
      public void keyReleased(KeyEvent e)
      {
    	}
     
     
    	public void keyTyped(KeyEvent e){}
     
     
    	protected JMenuBar createMenu(Interface i)
    	{
    		JMenuBar menubar = new JMenuBar();
    		JMenu fichier= new JMenu("Fichier");
    		JMenu aide = new JMenu("Aide");
    		fichier.setMnemonic('F');
    		aide.setMnemonic('A');
     
    		JMenuItem nouveau= new JMenuItem("Nouveau Jeu");
    		nouveau.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
    		JMenuItem quitter = new JMenuItem("Quitter");
    		fichier.add(nouveau);
    		fichier.addSeparator();
     
    		quitter.addActionListener(this);
    		nouveau.addActionListener(this);
    		fichier.add(quitter);
    		fichier.addActionListener(this);
    		menubar.add(fichier);
    		menubar.add(aide);
     
    		return menubar;
     
     
    	}
     
    	public void actionPerformed(ActionEvent e)
    	{
    		System.out.println(e.getSource());
    		if(e.getSource().toString().contains("text=Quitter"))System.exit(0);
    		if(e.getSource().toString().contains("text=Nouveau Jeu")){
    			System.out.println("Nouveau");
    			s.setPosition(200,0);
    		}
    		if(e.getSource().toString().contains("text=Fichier"))System.out.println("Fichier");
    	}
     
     
     
     
    	public void setSize(Interface i)
    	{
    		Toolkit t= i.getToolkit();
    		Dimension d=t.getScreenSize();
    		double h=(  (d.getHeight())/2);
    		double w=(  (d.getWidth())/2);
    		d.setSize(h,w);
    		i.setSize(d);
     
    	}
     
    	public void setLocation(Interface i)
    	{
    		Toolkit t= i.getToolkit();
    		Dimension d=t.getScreenSize();
    		double hs= d.getHeight();
    		double ws= d.getWidth();
     
    		d = i.getSize();
     
    		double h= (hs-d.getHeight())/2;
    		double w= (ws-d.getWidth())/2;
     
    		i.setLocation( (int)w, (int)h);
    	}
    }
    Voila pour finir la class Jeu qui contient le main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Jeu{
     
    	public static void main(String args[]){
    		Interface IHM = new Interface("Mon interface");
    	}
     
    }
    Voilà et le problème c'est que le JPanel se déplace avec l'image ca se voit quand on met la fenetre à l'arriere plan et qu'on la remet au 1er plan.

Discussions similaires

  1. taille d'une image et leur déplacement
    Par ninitta dans le forum Général Java
    Réponses: 2
    Dernier message: 08/12/2010, 11h23
  2. Disparition d'image lors du déplacement
    Par Invité dans le forum Général VBA
    Réponses: 12
    Dernier message: 08/10/2008, 07h50
  3. image, zoom et déplacement
    Par giminik dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 19/09/2007, 17h25
  4. [Image] scintillement lors déplacement sur autre composant
    Par lilou77 dans le forum Interfaces Graphiques en Java
    Réponses: 21
    Dernier message: 07/12/2005, 10h27
  5. [Traitement d'image] image: regle a respecter pour firefoxe et IE?
    Par xtaze dans le forum Webdesign & Ergonomie
    Réponses: 7
    Dernier message: 24/02/2005, 11h00

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