Pb de thread

cs_hysteria Messages postés 21 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 3 août 2010 - 18 juil. 2003 à 11:35
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 - 20 juil. 2003 à 05:36
salut all, je n'ai jamais utilise des thread mais g qd meme essaye, mais mon applet ne se rafraichit pas :(. Comme c cense etre un compte a rebours, si le temps change pas ca sert a rien...
voila mon bout de code si qqn pourrai me dire ce qu'il ne va pas a mon avis ce n'est qu'un detail.. merci :)

public class AppletTemps extends Applet implements Runnable {
private Integer Heures;
private Integer Minutes;
private Integer Secondes;
private int Heu;
private int Min;
private int Sec;
private Thread t ;


public AppletTemps(){
setFont(new Font("Courrier",Font.BOLD,14));
setForeground(Color.white);
t = new Thread(this);
}

public void init() {
Heu = Heures.parseInt(getParameter("Heures"));
Min = Minutes.parseInt(getParameter("Minutes"));
Sec = Secondes.parseInt(getParameter("Secondes"));
}

public void run() {
boolean i = true;
while(i) {

Sec--;

if (Sec == -1)
{ Sec = 59; Min--;}
if ((Min== -1)&&(Heu> 0))
{ Sec=59; Min=59; Heu--;}
if ((Min== -1)&&(Heu< 0))
{ Sec=59; Min=0; }
if (Heu == -1)
{ Sec=59; Min=59; Heu=0;}
if((Sec == -1)&&(Min== -1)&&(Heu == -1))
{i = false;}

try {t.sleep(1000);}
catch (InterruptedException signal) { }
}
repaint() ;
}

public void play() {
}

public void paint(Graphics g) {
String ch0="";
String ch1="";
String ch2="";
ch0 = ch0.valueOf(Heu);
ch1 = ch1.valueOf(Min);
ch2 = ch2.valueOf(Sec);
g.clearRect(0,0,getSize().width,getSize().height);
g.drawString(ch0, 2, 15);
g.drawString(" heures", 20, 15);
g.drawString(ch1, 90, 15);
g.drawString(" minutes", 110, 15);
g.drawString(ch2, 180, 15);
g.drawString(" secondes", 200, 15);
repaint() ;
}


public void destroy() {
}

}.

34 réponses

CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
18 juil. 2003 à 12:01
La méthode sleep() est statique tu peut donc faire Thread.sleep(...);

Thread t;

est donc inutile.
Le mieux est que dans ton constructeur tu mettes:
public AppletTemps(){ 
...
new Thread(this).start();
}

Et oui tu as oublié de démmarer le thread en appelant sa méthode start()

Sinon le reste a l'air correct.

Core Breaker :)
0
cs_hysteria Messages postés 21 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 3 août 2010
18 juil. 2003 à 16:06
merci ca marche mais g un autre pb maintenant l'affichage est tout saccade je pense ke ca viens de repaint()
il faut que je le place ou exactement dans run ou dans paint??
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
18 juil. 2003 à 17:05
je sais pas si c,est moi, mais pourquoi tout le monde utilise des graphics pour afficher du texte et des image ??? un jlabel, ça prend pas vraiment plus de mémoire, ça permet de faire la même chose, c'est même aussi flexible pis en plus, tu as pas ce genre de problème et pour finir, tu peut le mettre dasn un thread et ça va fonctionner et te donner exactement le même résultat
0
cs_hysteria Messages postés 21 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 3 août 2010
18 juil. 2003 à 18:13
tu pe pa m'expkiker comment plz je debute en graphisme...
0

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

Posez votre question
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
18 juil. 2003 à 18:56
tu position ton jlabel avec setbound
ensuite, tu l'ajoutes à ton frame

et si tu veux faire changer la valeur, c,est nom_du_jlabel.settext()

si tu veux ajouter une image, c,est seticon()

c'est tout et si en plus tu utulise un compilateru qui fabrique l'interface graphique comme jbuilder ou eclipse, tu le position avec l'éditeur pis il te reste seulement à ajuster ton texte, tout est automatique

tu as juste à regarder les source sur le site, c,est rpesque tout fait comme ça
0
cs_hysteria Messages postés 21 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 3 août 2010
18 juil. 2003 à 19:38
-------------------------------
Réponse au message :
-------------------------------

> tu position ton jlabel avec setbound
> ensuite, tu l'ajoutes à ton frame
>
> et si tu veux faire changer la valeur, c,est nom_du_jlabel.settext()
>
> si tu veux ajouter une image, c,est seticon()
>
> c'est tout et si en plus tu utulise un compilateru qui fabrique l'interface graphique comme jbuilder ou eclipse, tu le position avec l'éditeur pis il te reste seulement à ajuster ton texte, tout est automatique
>
> tu as juste à regarder les source sur le site, c,est rpesque tout fait comme ça
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> > tu pe pa m'expkiker comment plz je debute en graphisme...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > je sais pas si c,est moi, mais pourquoi tout le monde utilise des graphics pour afficher du texte et des image ??? un jlabel, ça prend pas vraiment plus de mémoire, ça permet de faire la même chose, c'est même aussi flexible pis en plus, tu as pas ce genre de problème et pour finir, tu peut le mettre dasn un thread et ça va fonctionner et te donner exactement le même résultat
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > >
> > > >
> > > > merci ca marche mais g un autre pb maintenant l'affichage est tout saccade je pense ke ca viens de repaint()
> > > > il faut que je le place ou exactement dans run ou dans paint??
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > La méthode sleep() est statique tu peut donc faire Thread.sleep(...);
> > > > >
> > > > >
Thread t;

> > > > > est donc inutile.
> > > > > Le mieux est que dans ton constructeur tu mettes:
> > > > >
public AppletTemps(){ 
> > > > > ...
> > > > > new Thread(this).start();
> > > > > }
> > > > > 

> > > > > Et oui tu as oublié de démmarer le thread en appelant sa méthode start()
> > > > >
> > > > > Sinon le reste a l'air correct.
> > > > >
> > > > > Core Breaker :)
> > > > >
> > > > >
> > > >
> > >
> >
>
0
cs_hysteria Messages postés 21 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 3 août 2010
18 juil. 2003 à 19:39
g essaye mais g fai une erreur qq part l'applet marche plus
regarde ma source plz c gentile :) :)

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Integer;
import java.net.URL;

public class AppletTemps extends Applet implements Runnable {

private Integer Heures;
private Integer Minutes;
private Integer Secondes;
private int Heu;
private int Min;
private int Sec;
private JLabel affichage = new JLabel();
private String s ;

public AppletTemps(){
setFont(new Font("Courrier",Font.BOLD,14));
setForeground(Color.white);
new Thread(this).start();
}

public void init() {
Heu = Heures.parseInt(getParameter("Heures"));
Min = Minutes.parseInt(getParameter("Minutes"));
Sec = Secondes.parseInt(getParameter("Secondes"));
}

public void run() {
boolean i = true;
while(i) {

Sec--;

if (Sec == -1)
{ Sec = 59; Min--;}
if ((Min== -1)&&(Heu> 0))
{ Sec=59; Min=59; Heu--;}
if ((Min== -1)&&(Heu< 0))
{ Sec=59; Min=0; }
if (Heu == -1)
{ Sec=59; Min=59; Heu=0;}
if((Sec == -1)&&(Min== -1)&&(Heu == -1))
{i = false;}

afficher() ;

try {Thread.sleep(1000);}
catch (InterruptedException signal) { }
}
}

public void afficher() {
String ch0="",ch1="",ch2="";
ch0 = ch0.valueOf(Heu);
ch1 = ch1.valueOf(Min);
ch2 = ch2.valueOf(Sec);
s = (ch0 + " heures " + ch1 + " minutes " + ch2 + " secondes");
affichage.setText (s) ;
}

public void paint(Graphics g) {
/*
g.clearRect(0,0,getSize().width,getSize().height);
g.drawString(ch0, 2, 15);
g.drawString(" heures", 20, 15);
g.drawString(ch1, 90, 15);
g.drawString(" minutes", 110, 15);
g.drawString(ch2, 180, 15);
g.drawString(" secondes", 200, 15);
*/
affichage.getText() ;
repaint() ;
}


public void destroy() {
}

}
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
18 juil. 2003 à 21:11
simple, tu es sur un applet et non un japplet. tu utilises AWT et non swing

donc en théorie (j'utilise toujours swing) tu as seulement à enlever les "J" donc au lieu de jlabel, c'est label

habituellement j'aurais dit d'utiliser swing, mais parait sur internet, ceux qui utilise la VM de microsoft ont de la misère à supporter swing qui est de Sun.
0
cs_hysteria Messages postés 21 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 3 août 2010
19 juil. 2003 à 00:11
es-tu sur d'aoir bien regarde mon code ?
g bien remplace JLabel par Label et maintenant ca ecrit applet demarre. de ce cote la ca a mais l'affichage fait un rectangle gris et ya rien ki s'affiche dedans :/ !!!!!!
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
19 juil. 2003 à 04:10
ben peut pas dire, en modifiant ton code, presque tout devrais avoir changer
0
cs_hysteria Messages postés 21 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 3 août 2010
19 juil. 2003 à 11:55
oinnn jy arriverai jamaiiiiiiiiiiiiiis !!!!!!!!!! :(:(:(:(:(
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
19 juil. 2003 à 13:48
Essaie de reduire la valeur d'appel de sleep

Core Breaker :)
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
19 juil. 2003 à 13:52
Ca a l'avantage de ne pas poivoir faire un copier coller si on veut pas qu'un utilisateur fasse un copier coller dessus afin de garder disponible des informations seulement au travers de l'application. Ce qui permet de garder des informations confidentielles.

Core Breaker :)
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
19 juil. 2003 à 13:58
Avec le plug-in java maintenant on peut utiliser swing sans problème car les applet utilise le plug-in et ne passe plus par la Microsoft VM mais il est vrai que son utilisation ne s'est pas encore généralisé il faudra attendre un peu.

Core Breaker :)
0
cs_hysteria Messages postés 21 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 3 août 2010
19 juil. 2003 à 14:02
bah non le sleep doit durer 1 seconde donc 1000
ya un truc ki doit foirer ds mon code c tout.......
mais je riske pas de trouver je debute je c pa bien comment ca marche tt ca...
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
19 juil. 2003 à 14:18
Essaie;
import java.awt.Label;
import java.applet.Applet;

public class AppletTemps extends Applet implements Runnable {

private Integer Heures;
private Integer Minutes;
private Integer Secondes;
private int Heu;
private int Min;
private int Sec;
private Label affichage = new Label();

public void init() {
Heu = Heures.parseInt(getParameter("Heures"));
Min = Minutes.parseInt(getParameter("Minutes"));
Sec = Secondes.parseInt(getParameter("Secondes"));
afficher();
add(affichage);
new Thread(this).start(); 
}

public void run() {
boolean i = true;
while(i) {

Sec--;

if (Sec == -1) 
{ Sec = 59; Min--;}
if ((Min== -1)&&(Heu> 0))
{ Sec=59; Min=59; Heu--;}
if ((Min== -1)&&(Heu< 0))
{ Sec=59; Min=0; }
if (Heu == -1)
{ Sec=59; Min=59; Heu=0;}
if((Sec == -1)&&(Min== -1)&&(Heu == -1))
{i = false;}
afficher();

try {Thread.sleep(1000);}
catch (InterruptedException signal) { }
}
}

public void afficher()
{
affichage.setText("" + Heu + " heures " + Min + " minutes " + Sec + " secondes");
}

}


Core Breaker :)
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
19 juil. 2003 à 14:20
Oublie mon message précédent dragon avec un JLabel tu ne peux pas non plus faire de copier-coller.

Core Breaker :)
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
19 juil. 2003 à 14:24
Bah non il peut aussi durrer 100ms, le rafraichissement de feras 10 fois plus vite donc logiquement ça ne dois plus saccader essaie toujours et vois si ca saccade toujours ca ne coute rien d'essayer ca ne vas pas faire planter ton système je te le garantit.

Core Breaker :)
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
19 juil. 2003 à 15:34
ben là, c,est vraiment pas difficille, regarde les sources sur le réseau, tu en a pliens qui affiche des images ou du texte et qui utilise des thread aussi
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
19 juil. 2003 à 15:36
comme corebreaker a fait, c,est pas plus compliquer que ça
0