Applet en Java : méthode start()

Fermé
Utilisateur anonyme - 19 avril 2009 à 22:47
saber07 Messages postés 116 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 20 novembre 2014 - 20 avril 2009 à 18:20
Salut tout le monde ^^

Voila je vais pas y aller par 4 chemins, je n'arrive pas à comprendre l'utilité d'une méthode....

En fait en TD, on a vu le code d'un applet qui dessine un ptit carré qui se déplace aléatoirement, et le truc c'est que quand on arrive à cliquer dedans, on a un point de plus à notre score (qui s'affiche en haut à gauche) ! Bien plus fun et intéressant que n'importe quel jeu vidéo pas vrai ^^
Voici donc le code (qui fonctionne, je le précise ;-) :


import javax.swing.JApplet;
import java.awt.Graphics;
import java.awt.Point;
import javax.swing.Timer;
import java.awt.event.*;

public class Jeu extends JApplet implements ActionListener, KeyListener, MouseListener{
	int taille = 30;
	int score = 0;
	Point position = new Point(50,50);
	Timer minuteur;
	
	public void init(){
		addMouseListener(this);
		addKeyListener(this);
	}

	public void start(){
		//Création d'un Timer qui génère "this" chaque 100 millième de seconde
		Timer minuteur = new Timer(100,this);
		minuteur.start();
	}
	
	//callback pour le minuteur	
	public void actionPerformed(ActionEvent evt) {
		repaint();
	}

	public void keyPressed(KeyEvent e) {
		System.out.println("event : " + e);
	}

	public void keyReleased(KeyEvent e) {}
	public void keyTyped(KeyEvent e) {}

	public void mouseClicked(MouseEvent e) {
		if(e.getX()>position.x && e.getX()<position.x+taille && e.getY()>position.y && e.getY()<position.y+taille)
			score++;
	}

	public void mouseEntered(MouseEvent e) {}
	public void mouseExited(MouseEvent e) {}
	public void mousePressed(MouseEvent e) {}
	public void mouseReleased(MouseEvent e) {}
	
	public void paint(Graphics g){
		g.clearRect(0, 0, getWidth(), getHeight());
		g.drawString("score : " + score, 10, 10);
		g.drawRect(position.x, position.y, taille, taille);
		position.x += (int)(Math.random()*5)-2;
		position.y += (int)(Math.random()*5)-2;
		requestFocus();
	}

}



Donc je comprends à quoi sert tout, sauf la méthode start() ^^
paint() est ce qui affiche l'applet et c'est la méthode appelé par repaint(),
init() c'est une sorte de "constructeur" où on initialise l'applet avec toutes sortes de paramètres, et ici notre classe est son propre observateur,
j'ai pigé tous les observateurs et les Listeners utilisés,
MAIS !
Je n'arrive pas à piger l'utilité de start()...

Alors j'ai bien cherché sur Internet, ou je tombe sur des tonnes de trucs qui apprennent à utiliser paint() et init(), mais pour start() aucun commentaire, les types utilisent ce truc sans réellement expliquer ce que ça fait....
Le seul truc à peu près correct que j'ai trouvé, c'est : "start() est appelée juste après init(). Elle est aussi appelée si l'utilisateur revient à une page web après avoir visité une autre page." Donc la première phrase je comprends ^^ mais la 2ème.....:-/

Donc si une âme charitable pouvait m'expliquer ce point de Java, je lui en serait infiniment reconnaissant...




Et en fait j'ai encore 2-3 autres questions ^^

Par exemple, alors qu'on doit mettre "NOTRE_CLASSE blabla implements ActionListener, KeyListener, MouseListner" et qu'on doit reféfinir toutes les méthodes des 3 interfaces, pourquoi est-ce qu'on a seulement :

public void init(){
		addMouseListener(this);
		addKeyListener(this);
	}


Moi pas comprendre, y'a pas besoin de mettre addActionListener ? Il est passé ou ? C'est l'exception qui confirme la règle ou quoi ? Ouiiiiiiiiiiiiin je comprends pas ^^
Parce qu'il me semble avoir lu quelque part que Timer nécessite une cible qui écoute les ActionEvent; or ici (puisque la cible est "this") on n'a pas de addActionListener alors je comprends plus trop là...


Enfin voila, j'espère que quelqu'un aura la bonté de m'aider un peu ^^ merci d'avance !
A voir également:

12 réponses

saber07 Messages postés 116 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 20 novembre 2014 20
20 avril 2009 à 00:56
start() est un méthodes qui qui démarre un processus systeme pour génère "this" chaque 100 millième de seconde.mais dans ce code il est définit la méthode sans l'utiliser .
1
Utilisateur anonyme
20 avril 2009 à 00:38
petit up ^^
personne pour m'aider ?
0
Utilisateur anonyme
20 avril 2009 à 01:06
Euh mais si on l'utilise !
Puisque j'ai vérifié le code fonctionne, le Timer et start() fonctionnent tous 2 très bien.....

Ne viens pas me faire peur hein ^^ et merci pour ta réponse
0
saber07 Messages postés 116 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 20 novembre 2014 20
20 avril 2009 à 01:15
tu essaye de supprimer les code que tu croit q'elle n'est pas necessaire et tu verras le résultat .
peut etre ce code est un extrait d'un autre code.key listener est vraiment non utilisable dans cette application surtous si on fait a l'action de clavier un exception.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
20 avril 2009 à 01:23
Oui oui je suis d'accord pour le keyListener, il sert un peu à rien ^^ mais bon ça c'est pas grave c'est pr le fun
Par contre le code est d'origine hein, c'est pas juste une partie de code que j'ai ^^
Mais pour le code à supprimer, je vois pas trop....
0
saber07 Messages postés 116 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 20 novembre 2014 20
20 avril 2009 à 01:27
ou est le pb alors??
0
Utilisateur anonyme
20 avril 2009 à 01:31
Le problème c'est que je comprends pas l'utilité de la méthode start() ! Je sais pas si c'est de ça que tu veux parler quand tu dis de supprimer une partie du code, mais en fait ce dont j'aurais besoin c'est d'une définition qui me dise à quoi sert start() si tu veux ^^
Sans compter mes autres questions mdr je suis en plein crise de questions existentielles ce soir ^^
0
Utilisateur anonyme
20 avril 2009 à 11:24
up please :)
0
Utilisateur anonyme
20 avril 2009 à 15:08
encore un up ^^
personne ne peut m'aider ?
0
saber07 Messages postés 116 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 20 novembre 2014 20
20 avril 2009 à 15:15
« Applet » est le nom d’une classe Java contenue dans le package « java.applet ». Tout programme Java destiné à être exécuté au sein d’un navigateur dérive [1] nécessairement de cette classe. Par extension, on appel applet toute sous classe de la classe « Applet ».

La classe Applet implémente plusieurs méthodes. Les principales sont les méthodes « init() », « start() », « stop() » et « destroy() ».

La méthode « init() » est la première méthode appelée une fois l’applet chargée par le navigateur. C’est dans cette fonction que les opérations d’initialisation doivent être effectuées.

La méthode « start() » est exécutée à la suite de la fonction « init() » et chaque fois que l’applet apparaît à l’écran.

La méthode « stop() » est exécutée chaque fois que l’applet disparaît. C’est par exemple le cas lorsque l’utilisateur réduit la fenêtre de son navigateur.

La méthode « destroy() » est exécutée lorsque les ressources utilisées par l’applet doivent être libérées. C’est par exemple le cas lorsque l’utilisateur ferme son navigateur. Avant d’exécuter cette fonction, la méthode « stop() » est systématiquement exécutée.

Les méthodes « init() », « start() », « stop() » et « destroy() » implémentées dans la classe Applet ne font rien, elles peuvent donc être redéfinies sans soucis par les classes héritières de la classe Applet.
0
Utilisateur anonyme
20 avril 2009 à 15:57
yeaaaaaaaaah merci beaucoup ^^
Par contre, pour start(), si c'est ce qui est exécuté chaque fois que l'applet apparait à l'écran, alors c'est un peu la même chose que paint() non ? Parce que si jme rappelle bien, paint est un peu le main() de l'applet, c'est ce qui permet de dessiner l'applet.....un peu comme start().....lol désolé de poser des questions aussi bêtes ^^

En tout cas merci beaucoup pour ton ptit résume très clair !
0
saber07 Messages postés 116 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 20 novembre 2014 20
20 avril 2009 à 18:20
paint() est un méthode pour dessiner des dessin comme rectangle ligne points....dans les applets et swing .n'est pas de dessiner des applet
0