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

Interfaces Graphiques en Java Discussion :

Deplacer un objet grace au clavier


Sujet :

Interfaces Graphiques en Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 8
    Points
    8
    Par défaut Deplacer un objet grace au clavier
    Bonjour,
    J'ai un jeu a realiser en java; et le doit deplacer mon objcet ki contient une position X et une position Y, en m'aidant des touche du clavier.
    et..... Au SECOURS je perd pied!!!
    Comment faire pour ke quan j'apuie sur la fleche du haut
    le PosY de l'objet soi modifier Ainsi de suite
    Merci d'avance

  2. #2
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    il faut que tu utilises les fonctions de keyListener et KeyEvent. Si tu ne sais pas comment les utiliser, sun a mis en ligne un petit tutorial que tu trouveras ici http://java.sun.com/docs/books/tutor...ylistener.html
    http://java.sun.com/docs/books/tutor...EventDemo.java

    Bonne chance.

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 8
    Points
    8
    Par défaut Merci mai je l'ai sous la main
    Sa m'aide pas trop vu ke c'est en anglaishttp
    J'ai beaucoup de cours et de tutorial mai la programmation est toujours differentes je m'y perds.
    N'aurait tu pas un bou de code en Exemple

  4. #4
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    Si tu as déjà les KeyListener il manque un timer pour capturer les événènements du clavier et déplacer l'objet. KeyEventDispatcher -> posX-posY <- timer.actionPerformed() -> draw(posX,posY)
    Tu peux t'inspirer du code source de ma platforme sf3Jswing basée sur un Pong classique avec 1 joueur contre la machine. sf3Jswing
    idéalement, les sources sont disponibles en exploration cvs sur le site.

  5. #5
    Membre régulier Avatar de DonkeyMaster
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 95
    Points : 110
    Points
    110
    Par défaut
    Allons, allons, pas de panique.
    Ton problème est simple, tu vas voir qu'on va y arriver.

    D'abord, tu crées deux KeyListener qui modifient la position. Un sera pour quand on appuie sur une touche, l'autre pour quand on la relâche.

    Dans cette méthode, tu regarderas de quelle touche il s'agit, et
    Je ne me souviens plus des noms des classes et des méthodes, ça il te faudra le trouver tout seul, mais pour l'algorithme, c'est comme je te montre.

    Quand on appuye sur une touche, on démarre le déplacement dans cette direction:
    Code java : 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
     
    public void onKeyDown (KeyboardEvent event) {
      switch (event.KeyPressed) {
      case KEY_UP:
        joueur.y_step=-1; //on se déplace vers le haut
        break;
      case KEY_DOWN:
        joueur.y_step=+1; //on se déplace vers le bas
        break;
      case KEY_LEFT:
        joueur.x_step=-1; //on se déplace vers la gauche
        break;
      case KEY_RIGHT:
        joueur.x_step=+1; //on se déplace vers la droite
        break;
      }
    }

    Quand on relâche une touche, on arrête le déplacement dans cette direction:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public void onKeyUp (KeyboardEvent event) {
      switch (event.KeyPressed) {
      case KEY_UP:
        joueur.y_step=0;    break;
      case KEY_DOWN:
        joueur.y_step=0;    break;
      case KEY_LEFT:
        joueur.x_step=0;    break;
      case KEY_RIGHT:
        joueur.x_step=0;    break;
      }
    }

    Enfin, à chaque battement de coeur, tu effectues le déplacement:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    joueur.x += joueur.x_step;
    joueur.y += joueur.y_step;

    Voilà, ceci n'est qu'une possibilité parmi beaucoup. J'espère t'avoir aidé.

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    tu peux tout simplement faire un repaint() mais avec de nouvelles coordonées:

    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
     
     
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
     
     
    public class test extends Applet{
    /*on crée une image sur laquelle on va dessiner, PUIS afficher, ce qui va éviter que l'écran ne sintille trop et on déclare les
    variables de position et de taille du bloc que l'on va déplacer*/
     
    Image img=null; // on "déclare" l'image qui va servir à afficher le bloc
    Graphics gi=null; // on déclare son "graphic"
     
    int X=0, Y=0, tailleX=100, tailleY=50;
     
      public void init(){
     
     	img=createImage(getSize().width, getSize().height);//on crée l'image à la taille de la zone de l'écran
    	 gi=img.getGraphics(); // on attribue ce graphic à l'image
         addKeyListener(new KeyAdapter(){ //on se sert d'un keyAdapter afin d'éviter d'avoir à appeler toutes les méthodes du keyListener
              public void keyPressed(KeyEvent evt){
                    if(evt.getKeyCode()==evt.VK_RIGHT && X+tailleX<=getSize().width){X++; paindre();} //on contrôle qu'il ne soit pas trop à droite avant de le déplacer vers la droite
                    if(evt.getKeyCode()==evt.VK_LEFT && X>=0){X--; paindre();} //on contrôle qu'ils ne soit aps trop à gauche avant de le déplacer vers la gauche
                    if(evt.getKeyCode()==evt.VK_DOWN && Y+tailleY<=getSize().height){Y++; paindre();} // on contrôle qu'il ne soit pas trop bas avant de le faire descendre
                    if(evt.getKeyCode()==evt.VK_UP && Y>=0){Y--; paindre();} //on contrôle qu'il ne soit pas trop haut, puis on le fait monter
              }
     
         });
     
         paindre();
      }
     
      public void paint(Graphics g){
     
    	 g.drawImage(img, 0, 0, this); //paint l'image
     
      }
     
      public void update(Graphics g){paint(g);} //on évite que l'écran ne sintille en demandant à la méthode de simplement paindre par dessus sans rien effacer
     
      public void paindre(){
      	  gi.setColor(Color.white);// on prends la couleur d'arrière plan
         gi.fillRect(0, 0, getSize().width, getSize().height); //on efface l'ancien bloque de l'image
     
         gi.setColor(Color.black);//on prends la couleur d'avant-plan
         gi.fillRect(X, Y, tailleX, tailleY); // on dessine le nouveau bloc sur l'image
     
         repaint(); //on appel la méthode update, qui va paindre la méthode "paint()"
      }
     
    }

    Voilà, ça te fait un bloc que tu peux déplacer, qui est limité aux limites de l'écran et qui ne sintille pas (ou pas beaucoup), j'éspère que ça t'ira ?

  7. #7
    Membre actif Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Points : 278
    Points
    278
    Par défaut jInternalFrame
    Bonjour, est -il possible de faire la même opération sans applet mais dans une jInternalFrame ?

    C'est a dire, au lieu d'avoir notre carré noir dans un applet, il serait déssiné dans une jInternalFrame.


    Merci

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu remplaces extends Applet par un extends JPanel, tu supprime la redéfinition de la méthode update, tu remplace paint par paintComponent.

    Puis tu ajoutes ce JPanel à cette JInternalFrame et m'affaire devrait être jouée.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  9. #9
    Membre actif Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Points : 278
    Points
    278
    Par défaut Merci
    Merci pour ta réponse, hélas j'ai une grosse erreur ( arret de la JVM lors du lancement de la jInternalFrame) je posterai mon code demain.

    L'idée, c'est que j'ai déja ma fenêtre principale, puis après avoir clic sur un bouton, un internalframe se place dans la fenetre principale.. et donc je souhaite pouvoir avoir ce carré noir ( pour le moment, c'est déja bien si j'y parvient apres je pourrais codé le reste ) dans la jInternalFrame et répondre aux actions des touches du clavier.

    A demain, et merci.

  10. #10
    Membre actif Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Points : 278
    Points
    278
    Par défaut Déplacement
    Bonjour, je n'arrive pas à faire déplacer mon objet (image) sur ma fenêtre principale.

    Je souhaite pouvoir déplacer cette image dans les 4 directions cardinales et apres pouvoir l'ajouter à un background pour qu'elle puisse se balader par-dessus ( prochaine étape ).

    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
     
     
    // imports....
     
     
    public class Fenetre extends JFrame {
     
     
    	private JMenu jMenu5;
    	private JSeparator jSeparator1;
    	private JMenu jMenu4;
    	private JMenuItem exitMenuItem;
    	private JSeparator jSeparator;
    	private JMenuItem openFileMenuItem;
    	private JMenuItem newFileMenuItem;
    	private JMenu jMenu3;
    	private JMenuBar jMenuBar1;
     
     
     
    	public static void main(String[] args) {
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				Fenetre inst = new Fenetre();
    				//inst.setContentPane(new ArrierePlan());
    				inst.setContentPane(new Deplacement());
    				inst.setLocationRelativeTo(null);
    				inst.setTitle("SNAKE JAVA");
    				inst.setSize(600, 400);
    				inst.setDefaultCloseOperation(inst.EXIT_ON_CLOSE);
    				inst.setVisible(true);
    			}
    		});
     
     
    	}
     
     
     
     
    	public Fenetre() {
    		super();
    		initGUI();
    	}
     
     
    	private void initGUI() {
    		try 
    			{
    		    	setSize(600, 400);
    			{
    				jMenuBar1 = new JMenuBar();
    				setJMenuBar(jMenuBar1);
    				{
    					jMenu3 = new JMenu();
    					jMenuBar1.add(jMenu3);
    					jMenu3.setText("File");
    					{
    						newFileMenuItem = new JMenuItem();
    						jMenu3.add(newFileMenuItem);
    						newFileMenuItem.setText("New");
    					}
    						newFileMenuItem.addActionListener(new ActionListener() {
     
    							@Override
    							public void actionPerformed(ActionEvent e) {
     
     
    								}
     
    						});
     
    										{
    						exitMenuItem = new JMenuItem();
    						jMenu3.add(exitMenuItem);
    						exitMenuItem.setText("Exit");
    					}
    					exitMenuItem.addActionListener(new ActionListener() {
     
     
    						public void actionPerformed(ActionEvent arg0) {
     
     
    							System.exit(0);
    						}
     
    					});
    				}
     
     
     
     
    			}
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    Puis la classe ou se trouve mon image plus la méthode déplacement :

    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
     
     
    // imports....
     
    public class Deplacement extends JPanel implements KeyListener{
     
    	private JLabel labelImage = new JLabel(); 
    	private int x=0,y=0;
     
    	public void paintComponent(Graphics g) {
     
    		try {
    		   Image  img2 = ImageIO.read(new File("iconO.png"));
     
     
    	        g.drawImage(img2, 40,0, this);
     
     
    		}catch (IOException e) {
    			e.printStackTrace();
    		}
    		}
     
     
    	public void keyPressed(KeyEvent ke) {
    		int key = ke.getKeyCode();
    		switch (key) {
    			case KeyEvent.VK_DOWN : 
    				y+=5;
    				break;
    			case KeyEvent.VK_UP:
    				y-=5;
     
    				break;
    			case KeyEvent.VK_RIGHT:
    				x+=5;
    				break;
    			case KeyEvent.VK_LEFT:
    				x-=5;
    				break;
     
    		}
    		labelImage.setBounds(x,y,40,40);
    	repaint();
     
     
    	}
    	public void keyReleased(KeyEvent ke) {}
    	public void keyTyped(KeyEvent ke) {
    	}
     
     
     
    }
    Je pense que je dois mal utiliser le repaint(); ou quelque chose du genre...
    Merci a vous.

  11. #11
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bon on va commencer doucement.

    Le NullLayout pour faire des animations/déplacements? Beurk, tu peux oublier, . Le NullLayout est déjà à la base une mauvaise pratique, mais ensuite l'utiliser comme ça... Bof bof bof pire pire pire.

    Pour faire un déplacement correct il te plutôt passer par le dessin direct de l'image dans le paintComponent avec les coordonnées calculées dans le keyPressed.

    C'est à dire que pour l'appel à la méthode drawImage dans le paintComponent tu dois utiliser x et y et non des valeurs en dur.

    Enfin il NE FAUT SURTOUT PAS charger l'image dans le paintComponent. En effet les chargement d'une image est une opération couteuse et va te bloquer tout le repaint du composant, et ce à chaque repaint.

    L'image doit être chargée dans le constructeur de ta classe.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  12. #12
    Membre actif Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Points : 278
    Points
    278
    Par défaut
    Merci pour ta réponse,

    cela donc devrait plus ressembler à ceci :

    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
     
    public class Deplacement extends JPanel implements KeyListener{
     
    	private JLabel labelImage = new JLabel(); 
    	private int x=0,y=0;
    	Image  img2 = ImageIO.read(new File("iconO.png"));
     
    	public void paintComponent(Graphics g) {
     
    		try {
    	        g.drawImage(img2, x, y, this);
    }
     
    		   public void keyPressed(KeyEvent ke) {
    		   int key = ke.getKeyCode();
    		switch (key) {
    			case KeyEvent.VK_DOWN : 
    				y+=5;
    				break;
    			case KeyEvent.VK_UP:
    				y-=5;
     
    				break;
    			case KeyEvent.VK_RIGHT:
    				x+=5;
    				break;
    			case KeyEvent.VK_LEFT:
    				x-=5;
    				break;
     
    		}
     
    		}catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
     
    	}
    	public void keyReleased(KeyEvent ke) {}
    	public void keyTyped(KeyEvent ke) {
    	}
     
     
     
    }
    Cependant, comment récupérer coordonnées calculées du KeyEvent dans le paintComponent ?

  13. #13
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Le keyEvent stocke les données dans x et y. De fait le paintComponent a jouste à se servir de x et y pour dessiner.

    Par contre ton KeyListener doit être placé en dehors du paintComponent. Et celui ci doit demander le repaint du composant à chaque exécution de la méthode keyPressed, après le recalcul de position.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  14. #14
    Membre actif Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Points : 278
    Points
    278
    Par défaut
    Merci bien, c'est ce que je me disais, or, il subsiste une erreur ou Eclipse me dit : "No suggestions available"

    Donc voila le code modifié :
    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
     
    import javax.imageio.ImageIO;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
     
     
    public class Deplacement extends JPanel implements KeyListener{
     
     
    	private JLabel labelImage = new JLabel(); 
        int x=0,y=0; 
        Image img = ImageIO.read(new File("pacman2.png")); // CETTE LIGNE EST SOULIGNEE EN ROUGE ( message a la fin du post )
        int bas, haut, droite, gauche;
     
     
     
     
    	public void paintComponent(Graphics g) {
     
     
    		labelImage.setBounds(x, y, 40, 0);
    		g.drawImage(img, x , y ,this);
    	}
     
     
     
     
     
     
    		 public void KeyPressed(KeyEvent ke) {
        		int key = ke.getKeyCode();
        		switch (key) {
        			case  KeyEvent.VK_DOWN : 
        				bas = y+=5;
     
     
        			case KeyEvent.VK_UP:
        				y-=5;
     
        				break;
        			case KeyEvent.VK_RIGHT:
        				x+=5;
        				break;
        			case KeyEvent.VK_LEFT:
        				x-=5;
        				break;
        		}
        		repaint();
     
        		}
     
     
     
    	public void keyReleased(KeyEvent ke) {}
    	public void keyTyped(KeyEvent ke) {
    	}
     
     
     
    }
    * Le message est : Default constuctor cannot handle exception type IOException thrown by implicit super constructor. Must define an explicit constructor.

    Je comprend donc par la que je dois reféfinir le bon constructeur, mais je vois pas pourquoi il n'est pas bon !

  15. #15
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    J'ai dit constructeur pour le chargement de l'image. Pas directement dans la déclaration de l'attribut. En effet la méthode read d'ImageIO déclare qu'elle peut lancer une exception. De fait il faut absolument traiter cette exception correctement. De fait je te conseille fortement de retourner réviser les bases de java avant de t'attaquer à du Swing comme tu es en train de la faire. Tu n'as pas assez intégré les bases de java pour pouvoir attaquer les API avancées.

    Accessoirement il faut vraiment que tu fasse disparaitre ton labelImage. Il ne sert à rien du tout à part t'embrouiller.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  16. #16
    Membre actif Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Points : 278
    Points
    278
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void paintComponent(Graphics g) {
    try {
    g.drawImage(img, x, y, this);
    }catch(IOException e) {
    e.printStackTrace();
    }
    J'avais oublié de mettre dans mon post l'exception, mais rien a faire cela ne fonctionne toujours pas.
    Enfin, je comprend ta réaction, or, je suis encore au stade d'apprentissage, étant donné que je dois rendre une application Swing/AWT , enfin voila
    Merci quand même

  17. #17
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Le try catch doit se trouver autour de ImageIO.read, pas autours du graphics.drawImage qui ne lui n'a aucune raison de déclencher une exception.

    Si tu veux savoir quelle méthode est susceptible de lancer une exception, confère toi à la javadoc.

    Toutefois sans un minimum de connaissance de java, ton appli Swing est vouée à perte. Tu gagneras du temps et évitera pas mal de galères de ce genre à reprendre ton cours et des tutos sur les bases de java. Car de fil en aiguille tu vas ne faire qu'à te heurter à des problèmes de ce genre du fait de ta méconnaissance du langage. Et au final perdre beaucoup de temps, voire énormément sur des choses totalement triviales.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. deplacer des objets dans un panel
    Par chris81 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/03/2008, 12h44
  2. [CS3] Dreamweaver CS3 deplacer des objet
    Par sambzh24 dans le forum Dreamweaver
    Réponses: 5
    Dernier message: 06/02/2008, 08h40
  3. [JS] 2 objets et évènement clavier
    Par Gryon dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/04/2007, 16h51
  4. Comment deplacer les objets sur JBuilder?
    Par awane dans le forum JBuilder
    Réponses: 3
    Dernier message: 08/07/2006, 18h23
  5. [VB6] Deplacer un objet sur une form en mode Exploitation
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 30/05/2006, 15h12

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