mastermario
Messages postés24Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention28 mars 2006
-
3 mars 2006 à 11:09
mastermario
Messages postés24Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention28 mars 2006
-
9 mars 2006 à 11:37
bonjours a tous :
je voudrais réaliser une fonction temporisation qui mettrait en "pause"
un applet pendant 1 sec mais je ne sais pas comment l'utiliser
je n'utilise aucune fonction spéciale pour mon applet (ni thread, ni...)
Ronnymoi
Messages postés12Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention20 mars 20064 3 mars 2006 à 14:01
Salut
euh je dirais que dans ta méthode "start" de ton applet tu creer un Thread:
ex : avec t le Thread
if (t==null){
t=new Thread(this);
t.start();
}
et dans ta fonciton run de ton applet tu fait un:
t.sleep (1000);
sans oublier de gerer les exceptions visible sur la javadoc
mastermario
Messages postés24Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention28 mars 2006 5 mars 2006 à 09:38
je ne voit pas comment faire :s
voici mon programme, je souhaiterai réaliser une tempo de 1s pour que l'action tracegraphe ( tout en bas du programme ) se réalise une fois la tempo passé et de facon répétitive (on trace, j'attend 1s, on trace, j'attend 1s, ...)
il faut prevoir l'ajout d'un repaint(all);
import java.awt.*;
import java.applet.*;
public class repere extends Applet
{
Font clockFaceFont;
Color repereColor;
Color graduationColor;
int j=0, posX1=20, posY1=200;;
public void init()
{
setBackground(Color.white);
}
Ronnymoi
Messages postés12Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention20 mars 20064 6 mars 2006 à 09:19
Salut,
à ta place je créerais une fonction start pour creer un procesus:
Thread t;
public void start(){
if (t == null){
t=new Thread(this);
t.start();
}
}
public void run(){
Thread thisThread = Thread.currentThread();
while (t == thisThread){
try {
Thread.sleep(1000); //100ms=1s
}catch(InterruptedException ie){
System.out.println("Thread interrupted: " +ie);
mThread=null;
}
repaint();
}
}
prevoir une fonction stop:
public void stop() {
// arret du thread
if (mThread != null) {
mThread = null;
this.destroy();
}
}
Ronnymoi
Messages postés12Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention20 mars 20064 6 mars 2006 à 13:00
non tu rajoute rien
t'as rien a faire c le principe d'une applet
elle lance le init et le start une fois et apres elle appelle le run qui tourne en permanence
et donc quand tu fais le repaint toute les 1s, elle rappel ta fonction paint qui elle meme rappel ta fonction tracegraph
Voila! meme si je pense que tu avais deja reussi a faire marcher tout ca vu que tu as accepter la reponse, mais c etais pour une petite precision...
Et t'inkiete personne n'est mauvais mais tout le monde debute un jour....
mastermario
Messages postés24Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention28 mars 2006 9 mars 2006 à 09:04
j'ai encore de petit probleme avec ton programme :p
J'ai deja effectuer les modification suivante decu :
Thread t, mThread, thisThread ;
public void start(){
if (t == null){
t=new Thread(); <== supporte pas le Thread(this)
t.start();
}
}
public void run(){
thisThread = Thread.currentThread();
while (t == thisThread){
try {
Thread.sleep(1000); //100ms=1s
}catch(InterruptedException ie){
System.out.println("Thread interrupted: " +ie);
mThread=null;
<== je l'ai definit en haut
}
repaint();
}
}
prevoir une fonction stop:
public void stop() {
// arret du thread
if (mThread == null) { <== je pense que c est un '=' ici
mThread = null;
this.destroy();
}
}
cependant, meme si le programme ce compile, la mise a jours de ma
courbe ne s'effectue pas seul ( je doit reduire la fenetre et la
remettre pour observer des modifications )
je voudrait qu'elle se fasse seul, comment faire ?
Ronnymoi
Messages postés12Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention20 mars 20064 9 mars 2006 à 11:03
salut excuse moi j'ai fait de la merde j'ai copier coller mon code en oubliant de modifier certain truc :p
dsl...
Tout les "mThread" corresponde en faite a "t" je me suis planter c dans mon code perso que je l'appel mThread
import java.awt.*;
import javax.swing.JApplet;
public class GetHostName extends JApplet implements Runnable //ATTENTION JApplet et non pas Apllet
{
Font clockFaceFont;
Color repereColor;
Color graduationColor;
int j=0, posX1=20, posY1=200;
Thread t, thisThread ;
public void init()
{
setBackground(Color.white);
}
public void start(){
if (t == null){
t=new Thread(this); //avec la JApplet cela devrai marcher
t.start();
}
}
public void run(){
thisThread = Thread.currentThread();
while (t == thisThread){
System.out.println("Test du passage dans run"); // --> permet de verifier que ca passe dans run (comme indiquer) :p
try {
Thread.sleep(1000); //1000ms=1s
}catch(InterruptedException ie){
System.out.println("Thread interrupted: " +ie);
t=null;
}
repaint();
}
}
public void stop() {
// arret du thread
if (t != null) { // Si t n'est pas arreter on l'arrete et
t= null;
this.destroy(); //on detruit l'applet
}
}
public void plotrepere(int x0,int y0,int x,int y,Graphics g)
{
g.drawLine(x0,y0,x,y); //horizontal
g.drawLine(x,y,2*y,y); //vertical
}
public void plotgraduation(int x0,int y0,int g0,Graphics g)
{
int i;
for(i=0;i<g0;i++){
g.drawLine(x0+(30*i),y0-5,x0+(30*i),y0+5); //axe horizontal
g.drawLine(x0-5,y0-(24*i),x0+5,y0-(24*i)); //axe vertical
}
}
public void paint(Graphics g)
{
g.setColor(Color.black);
plotrepere(20,20,20,200,g);
//g.setColor(Color.yellow);
plotgraduation(20,200,13,g);
//g.setColor(Color.cyan);
int[] tab = {20,40,60,80,100,120,140,160,180,200}; //plus judicieux de mettre des entiers car tu fais de operation dessus
tracegraphe(tab,g); // "char" c 'est pour les caracteres
mastermario
Messages postés24Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention28 mars 2006 9 mars 2006 à 11:37
j'ai verifier ton prog, il se compile et ce lance comme il faut
toutefois, mon applet ne se rafraichit pas automatiquement et je trouve
ca anormal.
il se met a jours lorsque je lance l'applet seul mais avec le prog
principale, il ne fonctionne pas . je te montre mon prog ( attention, c
est assez lourd :p )
ya pas mal de trucs pas finit, fais pas trop gaffe ( surtout les ecouteur en fait :p )