Temporisation

Signaler
Messages postés
24
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
28 mars 2006
-
Messages postés
24
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
28 mars 2006
-
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...)



pourriez vous m'aidez svp ?

9 réponses

Messages postés
12
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
20 mars 2006
4
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

Ronnymoi
Messages postés
24
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
28 mars 2006

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);
}

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 tracebar (int posX,int posY,Graphics g)
{
g.drawLine(posX,posY,posX1,posY1);
posX1 = posX;
posY1= posY;
}

public void tracegraphe(char[] x0,Graphics g)
{
for(j=0;j<10;j++)
{
tracebar(30*(j+1),200-x0[j],g);
}
if(j==10) j=0;
}


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);
char[] tab = {20,40,60,80,100,120,140,160,180,200};
tracegraphe(tab,g); <=== fonction a répété

g.setColor(Color.red);
g.drawLine(20,70,400,70);
g.drawLine(20,55,400,55);
}
}
Messages postés
12
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
20 mars 2006
4
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és
24
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
28 mars 2006

heu je met ca dans ma classe oki mais apres je m en sert comment ? je comprend pas bien

je doit rajouter un truc style
while(true)
{
tracegraphe(....);
t.sleep(1000);
}

je pense pas non ? comment je m y prend stp ( dsl d etre aussi mauvais )
Messages postés
12
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
20 mars 2006
4
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....

Ronnymoi
Messages postés
24
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
28 mars 2006

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 ?
Messages postés
24
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
28 mars 2006

j'ai remarqué qu'en fait le run ne se lancait pas...



comment faire ?
Messages postés
12
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
20 mars 2006
4
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 tracebar (int posX,int posY,Graphics g)
{
g.drawLine(posX,posY,posX1,posY1);
posX1 = posX;
posY1= posY;
}

public void tracegraphe(int[] x0,Graphics g)
{
for(j=0;j<10;j++)
{
tracebar(30*(j+1),200-x0[j],g);
}
if(j==10) j=0;
}

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

g.setColor(Color.red);
g.drawLine(20,70,400,70);
g.drawLine(20,55,400,55);
}
}

Et la normalement ca doit marcher.... bah chez moi ca marche en faite
voili voilou bonne journée
Ronnymoi
Messages postés
24
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
28 mars 2006

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 )

**********************FENETRE ***************************:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.lang.*;







public class Fenetre extends JFrame implements ActionListener

{

JRadioButton Fahrenheit, Celsius, Beep;

JLabel Current_Temperature, Temperature, F, Title,
sous_title, Temp, Time, Alarm, High, Low, Samples, Zoom, Time11,
Time22, t1, t2, t3, t4, t5;

JButton Stop, Clear, Deconnexion;

JComboBox H,L,T;

JScrollBar Time_Axis, Temp_Axis;

repere g;

Font grand, moyen;

int MAX, MIN;









public Fenetre()

{

super("repere");

/**definition fenetre**/

JFrame fen = new JFrame("Interface de gestion de température");

fen.setBounds(100,70,800,650);

grand = new Font("arial",Font.BOLD,30);

moyen = new Font("arial",Font.BOLD,20);





GridBagLayout grid = new GridBagLayout();

fen.setLayout(grid);



/**création de l'espace Titre**/

GridBagConstraints Titre = new GridBagConstraints();

Titre.gridx = 1;

Titre.gridy = 0;

Titre.gridwidth = 5;

Titre.gridheight = 1;

Titre.ipady = 50;



/**ajout du titre**/

Title = new JLabel("DALLAS SEMINCONDUCTOR / MAXIM");

Title.setFont(grand);

grid.setConstraints(Title, Titre);

fen.add(Title);



/**création de l'espace sous-Titre**/

GridBagConstraints sous_titre = new GridBagConstraints();

sous_titre.gridx = 1;

sous_titre.gridy = 1;

sous_titre.gridwidth = 5;

sous_titre.gridheight = 1;

sous_titre.ipady = 30;



/**ajout du sous-titre**/

sous_title = new JLabel("DS1920 Interface de Contrôle de température");

sous_title.setFont(moyen);

grid.setConstraints(sous_title, sous_titre);

fen.add(sous_title);





/**création de l'espace graphique**/

GridBagConstraints Graph = new GridBagConstraints();

Graph.gridx = 1;

Graph.gridy = 4;

Graph.gridwidth = 3;

Graph.gridheight = 70;

Graph.weightx = 4;

Graph.ipady = 200;

Graph.ipadx = 150;

Graph.insets = new Insets(0,50,0,0);

Graph.fill = GridBagConstraints.HORIZONTAL;



/**ajout du graphique**/

g = new repere();

g.setBackground(Color.white);

grid.setConstraints(g, Graph);

fen.add(g);



/**création de l'espace Fahrenheit**/

GridBagConstraints Fahr = new GridBagConstraints();

Fahr.gridx = 5;

Fahr.gridy = 3;

Fahr.gridwidth = 1;

Fahr.gridheight = 1;

Fahr.weightx = 1;

Fahr.fill = GridBagConstraints.HORIZONTAL;

Fahr.anchor = GridBagConstraints.SOUTH;



/**ajout du JRadio Fahrenheit**/

Fahrenheit = new JRadioButton("Fahrenheit");

Fahrenheit.addActionListener(this);

grid.setConstraints(Fahrenheit, Fahr);

fen.add(Fahrenheit);



/**création de l'espace Celsius**/

GridBagConstraints Cel = new GridBagConstraints();

Cel.gridx = 6;

Cel.gridy = 3;

Cel.gridwidth = 1;

Cel.gridheight = 1;

Cel.weightx = 1;

Cel.fill = GridBagConstraints.HORIZONTAL;

Cel.anchor = GridBagConstraints.SOUTH;



/**ajout du JRadio Celsius**/

Celsius = new JRadioButton("Celsius");

Celsius.addActionListener(this);

grid.setConstraints(Celsius, Cel);

fen.add(Celsius);



/**création espace Alarm level**/

GridBagConstraints Alarme = new GridBagConstraints();

Alarme.gridx = 4;

Alarme.gridy = 4;

Alarme.gridwidth = 3;

Alarme.gridheight = 1;

Alarme.weightx = 1;

Alarme.ipady = 50;





/**ajout du label Alarm**/

Alarm = new JLabel("Niveau d'Alarme");

Alarm.setFont(moyen);

grid.setConstraints(Alarm, Alarme);

fen.add(Alarm);



/**création espace High Trip**/

GridBagConstraints Haut = new GridBagConstraints();

Haut.gridx = 4;

Haut.gridy = 5;

Haut.gridwidth = 1;

Haut.gridheight = 1;



/**ajout du label Alarm**/

High = new JLabel("Niveau Haut");

grid.setConstraints(High, Haut);

fen.add(High);



/**création espace Low Trip**/

GridBagConstraints Bas = new GridBagConstraints();

Bas.gridx = 5;

Bas.gridy = 5;

Bas.gridwidth = 1;

Bas.gridheight = 1;



/**ajout du label Alarm**/

Low = new JLabel("Niveau Bas");

grid.setConstraints(Low, Bas);

fen.add(Low);



/**création espace Beep**/

GridBagConstraints Bip = new GridBagConstraints();

Bip.gridx = 6;

Bip.gridy = 6;

Bip.gridwidth = 1;

Bip.gridheight = 1;



/**ajout du Beep**/

Beep = new JRadioButton("Bip ?");

grid.setConstraints(Beep, Bip);

fen.add(Beep);



/**création du niveau haut de température**/

GridBagConstraints Temp_H = new GridBagConstraints();

Temp_H.gridx = 4;

Temp_H.gridy = 6;

Temp_H.gridwidth = 1;

Temp_H.gridheight = 1;

Temp_H.insets = new Insets(3,3,3,3);



/**ajout du niveau haut**/

H = new JComboBox();

H = getNumbersCombo(1,100,1);

grid.setConstraints(H, Temp_H);

fen.add(H);



/**création du niveau bas de tempéraure**/

GridBagConstraints Temp_L = new GridBagConstraints();

Temp_L.gridx = 5;

Temp_L.gridy = 6;

Temp_L.gridwidth = 1;

Temp_L.gridheight = 1;

Temp_L.insets = new Insets(3,3,3,3);



/**ajout du niveau bas**/

L = new JComboBox();

L = getNumbersCombo(1,100,1);

grid.setConstraints(L, Temp_L);

fen.add(L);



/**création de la base de temps**/

GridBagConstraints Temp_T = new GridBagConstraints();

Temp_T.gridx = 4;

Temp_T.gridy = 8;

Temp_T.gridwidth = 1;

Temp_T.gridheight = 1;

Temp_T.insets = new Insets(3,3,3,3);



/**ajout du niveau bas**/

T = new JComboBox();

T = getNumbersCombo(10,500,10);

grid.setConstraints(T, Temp_T);

fen.add(T);



/**création label samples per minutes**/

GridBagConstraints secondes = new GridBagConstraints();

secondes.gridx = 5;

secondes.gridy = 8;

secondes.gridwidth = 1;

secondes.gridheight = 1;

secondes.insets = new Insets(3,3,3,3);



/**ajout du echantillonnage**/

Samples = new JLabel("Echantillonnage en seconde");

grid.setConstraints(Samples, secondes);

fen.add(Samples);



/**création label Zoom**/

GridBagConstraints ZoomC = new GridBagConstraints();

ZoomC.gridx = 4;

ZoomC.gridy = 10;

ZoomC.gridwidth = 3;

ZoomC.gridheight = 1;

ZoomC.ipady = 50;



/**ajout du label Zoom**/

Zoom = new JLabel("Contrôle de Zoom");

Zoom.setFont(moyen);

grid.setConstraints(Zoom, ZoomC);

fen.add(Zoom);



/**création label time axis**/

GridBagConstraints Time1 = new GridBagConstraints();

Time1.gridx = 4;

Time1.gridy = 11;

Time1.gridwidth = 3;

Time1.gridheight = 1;



/**ajout du label time-axis**/

Time11 = new JLabel("Axe du Temps");

grid.setConstraints(Time11, Time1);

fen.add(Time11);



/**création Time-Axis**/

GridBagConstraints TimeAxis = new GridBagConstraints();

TimeAxis.gridx = 4;

TimeAxis.gridy = 13;

TimeAxis.gridwidth = 3;

TimeAxis.gridheight = 1;

TimeAxis.insets = new Insets(3,3,3,3);

TimeAxis.ipadx = 250;



/**ajout du time-axis**/

Time_Axis = new JScrollBar(0, 10, 50, 0, 1000);

grid.setConstraints(Time_Axis, TimeAxis);

fen.add(Time_Axis);



/**création label temp axis**/

GridBagConstraints Time2 = new GridBagConstraints();

Time2.gridx = 4;

Time2.gridy = 15;

Time2.gridwidth = 3;

Time2.gridheight = 1;



/**ajout du label temp-axis**/

Time22 = new JLabel("Axe de Température");

grid.setConstraints(Time22, Time2);

fen.add(Time22);



/**création Temp-Axis**/

GridBagConstraints TempAxis = new GridBagConstraints();

TempAxis.gridx = 4;

TempAxis.gridy = 17;

TempAxis.gridwidth = 3;

TempAxis.gridheight = 1;

TempAxis.insets = new Insets(3,3,3,3);

TempAxis.ipadx = 250;



/**ajout du temp-axis**/

Temp_Axis = new JScrollBar(0, 10, 50, 0, 1000);

grid.setConstraints(Temp_Axis, TempAxis);

fen.add(Temp_Axis);





/**création espace bouton STOP**/

GridBagConstraints BSTOP = new GridBagConstraints();

BSTOP.gridx = 4;

BSTOP.gridy = 20;

BSTOP.gridwidth = 1;

BSTOP.gridheight = 1;

BSTOP.ipady = 20;

BSTOP.ipadx = 10;



/**ajout du stop**/

Stop = new JButton("STOP");

Stop.addActionListener(this);

grid.setConstraints(Stop, BSTOP);

fen.add(Stop);



/**création espace bouton CLEAR**/

GridBagConstraints BCLEAR = new GridBagConstraints();

BCLEAR.gridx = 6;

BCLEAR.gridy = 20;

BCLEAR.gridwidth = 1;

BCLEAR.gridheight = 1;

BCLEAR.ipady = 20;

BCLEAR.ipadx = 10;



/**ajout du clear**/

Clear = new JButton("EFFACER");

Clear.addActionListener(this);

grid.setConstraints(Clear, BCLEAR);

fen.add(Clear);



/**création espace bouton DECONNEXION**/

GridBagConstraints DECO = new GridBagConstraints();

DECO.gridx = 5;

DECO.gridy = 20;

DECO.gridwidth = 1;

DECO.gridheight = 1;

DECO.ipady = 20;

DECO.ipadx = 10;



/**ajout du deconnexion**/

Deconnexion = new JButton("DECONNEXION");

Deconnexion.addActionListener(this);

grid.setConstraints(Deconnexion, DECO);

fen.add(Deconnexion);





/**création espace température courrante**/

GridBagConstraints TempC = new GridBagConstraints();

TempC.gridx = 1;

TempC.gridy = 21;

TempC.gridwidth = 1;

TempC.gridheight = 1;

TempC.insets = new Insets(0,100,0,0);



/**ajout de température courrante**/

Current_Temperature = new JLabel("Température actuelle ");

Current_Temperature.setFont(moyen);

grid.setConstraints(Current_Temperature, TempC);

fen.add(Current_Temperature);



/**création espace valeur de la température courrante**/

GridBagConstraints valeur = new GridBagConstraints();

valeur.gridx = 2;

valeur.gridy = 21;

valeur.gridwidth = 1;

valeur.gridheight = 1;

valeur.anchor = GridBagConstraints.CENTER;



/**ajout de la valeur de la température courrante**/

Temperature = new JLabel("19");

Temperature.setFont(moyen);

grid.setConstraints(Temperature, valeur);

fen.add(Temperature);



/**création espace unité de la température courrante**/

GridBagConstraints unite = new GridBagConstraints();

unite.gridx = 3;

unite.gridy = 21;

unite.gridwidth = 1;

unite.gridheight = 1;

unite.anchor = GridBagConstraints.WEST;



/**ajout de l'unité de la température courrante**/

F = new JLabel("F°");

F.setFont(moyen);

grid.setConstraints(F, unite);

fen.add(F);



/**Création de la notation T sur le coté du graphique


*
E


*
M


*
P


*


*

**/



/**création notation Temp axe (T)**/

GridBagConstraints T1 = new GridBagConstraints();

T1.gridx = 1;

T1.gridy = 6;

T1.gridwidth = 1;

T1.gridheight = 1;

T1.insets = new Insets(0,30,0,0);

T1.anchor = GridBagConstraints.WEST;



/**ajout de la notation Temp axe (T)**/

t1 = new JLabel("T");

t1.setFont(moyen);

grid.setConstraints(t1, T1);

fen.add(t1);



/**création notation Temp axe (E)**/

GridBagConstraints T2 = new GridBagConstraints();

T2.gridx = 1;

T2.gridy = 7;

T2.gridwidth = 1;

T2.gridheight = 1;

T2.insets = new Insets(0,30,0,0);

T2.anchor = GridBagConstraints.WEST;



/**ajout de la notation Temp axe (E)**/

t2 = new JLabel("E");

t2.setFont(moyen);

grid.setConstraints(t2, T2);

fen.add(t2);



/**création notation Temp axe (M)**/

GridBagConstraints T3 = new GridBagConstraints();

T3.gridx = 1;

T3.gridy = 8;

T3.gridwidth = 1;

T3.gridheight = 1;

T3.insets = new Insets(0,30,0,0);

T3.anchor = GridBagConstraints.WEST;



/**ajout de la notation Temp axe (M)**/

t3 = new JLabel("M");

t3.setFont(moyen);

grid.setConstraints(t3, T3);

fen.add(t3);



/**création notation Temp axe (P)**/

GridBagConstraints T4 = new GridBagConstraints();

T4.gridx = 1;

T4.gridy = 9;

T4.gridwidth = 1;

T4.gridheight = 1;

T4.insets = new Insets(0,30,0,0);

T4.anchor = GridBagConstraints.WEST;



/**ajout de la notation Temp axe (P)**/

t4 = new JLabel("P");

t4.setFont(moyen);

grid.setConstraints(t4, T4);

fen.add(t4);



/**création notation Temps axe **/

GridBagConstraints T5 = new GridBagConstraints();

T5.gridx = 1;

T5.gridy = 17;

T5.gridwidth = 1;

T5.gridheight = 1;

T5.insets = new Insets(0,150,0,0);

T5.anchor = GridBagConstraints.WEST;



/**ajout de la notation Temps axe (P)**/

t5 = new JLabel("TEMPS (sec)");

t5.setFont(moyen);

grid.setConstraints(t5, T5);

fen.add(t5);



/** rend tout visible **/

fen.setVisible(true);

}









/**Retourne une combo contenant les chifres commençant a deb jusqu'a fin avec un pas de pas**/

public JComboBox getNumbersCombo(int deb, int fin, int pas)

{

Object[] nums = new Object[(fin - deb + 1) / pas];

int num = deb;

for (int i = 0 ; i