Probleme de threads

cs_stun Messages postés 10 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 7 avril 2006 - 6 nov. 2002 à 20:07
cs_stun Messages postés 10 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 7 avril 2006 - 19 nov. 2002 à 22:28
Salut a tous !

Au secours, j'ai un grand problème

Je dois faire un programme Java qui génère une autre fenêtre quand on click sur le bouton A de la fenêtre initiale et ferme toutes les fenêtres filles lorsque l'on clik sur le bouton B.

J'ai utilisé un Thread pour créer les fenêtres filles mais comment toutes les tuer sans éliminer la fenêtre principale.

Merci beaucoup

ps: help

8 réponses

JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
7 nov. 2002 à 08:52
Je comprend pas pourquoi tu utilises un thread pour creer tes fenetres, en écoutant le bouton A, cela suffit.
Pour fermer tes fenetres générées, stocke les dans un Vector, puis sur l'écouteur de B, tu fais un setVisible(false); et un dispose(); sur toutes tes filles, puis tu vides ton Vector.
JHelp.
cs_stun Messages postés 10 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 7 avril 2006
15 nov. 2002 à 16:46
merci c est vrai que les threads n etaient pas necessaire mais qu en je met les fenetre fille dans le vector il ne les reconnais plus comme fille mais comme object alors il me refuse dispose

merci jhelp
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
16 nov. 2002 à 07:10
C'est vrai, j'avais oublié, mais je supose que dans ce cas tu les retire une à une du Vector, pour faire un dispose.
JHelp
cs_stun Messages postés 10 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 7 avril 2006
17 nov. 2002 à 03:16
voici la classe fille :

import java.awt.Frame;

public class Fille extends Frame
{

public Fille(int i)
{
setSize(300, 200);
setTitle("Fenetre" + i);
setVisible(true);
}

public void closer()
{
setVisible(false);
}
}

la classe mere:

import java.awt.*;
import java.util.*;
import java.lang.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintStream;

public class Fenetre extends Frame implements ActionListener
{

Vector v=new Vector();

public Fenetre()
{
bnouveau = new Button("Nouveau");
btoutfermer = new Button("Tout fermer");
setLayout(new FlowLayout());
setSize(500, 300);
setTitle("Multidiffusion");
add(bnouveau);
add(btoutfermer);
setVisible(true);
bnouveau.addActionListener(this);
btoutfermer.addActionListener(this);
numfenetre = 0;
}

public void actionPerformed(ActionEvent actionevent)
{
Object obj = actionevent.getSource();
if(obj == bnouveau)
{
numfenetre++;
Fille fille = new Fille(numfenetre);
v.add(fille);
System.out.println("Nouvelle fenetre");
} else
{
fermer();
System.out.println("Fermeture");

numfenetre = 0;
}
}

public void fermer()
{

for(int i=0;i<numfenetre;i++)
{
v.get(i).dispose();
v.remove(i);
}
}

public static void main(String args[])
{
Fenetre fenetre = new Fenetre();
}

Button bnouveau;
Button btoutfermer;
int numfenetre;
}

et l erreur de compilation:

C:\WINDOWS\Bureau\tp04\EXO1\Fenetre.java:53: cannot resolve symbol
symbol : method dispose ()
location: class java.lang.Object
v.get(i).dispose();
^
je suis sur que y a une couille dans la paté

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

Posez votre question
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
17 nov. 2002 à 08:01
N'oublie pas que le vecteur te renvoie des objets qu'il te faut caster.
Pour la fermeture fait plutot :
int nb=vecteur.size();
for(int i=0;i<nb;i++)
{
//On caste l'objet courant en Fille.
//On est sur que c'est un objet Fille, puisque l'on a ajouter que des Fille
Fille fille=(Fille)vecteur.elementAt(i);
fille.dispose();
}
vecteur.clear();

En suite au sujet de Vector, utilises plutot addElement que add
elementAt que get
insertElementAt que add(Object,int)
setElementAt que set
...
Se sont des méthodes plus adaptées et mieux faites. Les autres ne sont là que pas soucis d'héritage.
Tu n'as pas besoin de compter le nombre de filles, la méthode size() de Vector te renvoie le nombre d'éléments dans le vecteur.

Si tu veux etre encore plus Objet dans ta conception, crée une classes Filles qui contient l'ensemble des Fille.

import java.util.Vector;

public class Filles
{
private Vector vecteur=new Vector();
public Filles()
{
}
public void ajoute(Fille fille)
{
if(fille!=null)
vecteur.addElement(fille);
}
public void dispose()
{
int nb=vecteur.size();
for(int i=0;i<nb;i++)
{
//On caste l'objet courant en Fille.
//On est sur que c'est un objet Fille,
//puisque l'on a ajouter que des Fille
Fille fille=(Fille)vecteur.elementAt(i);
fille.dispose();
}
vecteur.clear();
}
}

Ainsi tu controles les objets entrer, et çà simplifie les traitements. Un traitement dédié est tellement plus efficace, facile à comprendre, et à réaliser.

JHelp.
cs_stun Messages postés 10 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 7 avril 2006
17 nov. 2002 à 12:27
oh mais ça marche
merci jhelp

t as un probleme je suis la !!!!!!

ps : quoique je pense que tu n as pas de probleme vu ton niveau

merci
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
17 nov. 2002 à 14:38
Si j'en ai des pb.
J'essaie toujours de m'en sortir seul, je maitrise mieux ainsi. Mias, puisque tu te propose, je peux tjs te demander.
Mon pb est le suivant :
J'ai fait des animations 3D avec le paquage java3D, pour montrer sur un site, je les ai convertis en applet. Mon pb, c'est que les internautes doivent télécharger java3D pour voir mon animation. Comment faire, sans faire ma solution actuelle qui est d'écrire un moteur 3D de bout en bout ?
Je veux savor comment fair en sorte que les visiteurs de la page puissent voir les animations sans télécharger quoique se soit, sans perte de qualité ? Il existe des solutions, mais soit elles sont payantes, soit d'une qualitée médiocre, soit il faut télécharger un plug-in, mais je n'en ai pas trouvé qui satisface mes exigences.
Si tu as des infos la dessus, je t'en serait reconnaissant et je n'aurais pas à terminer mon moteur, qui va me prendre encore un bon bout de temps.
JHelp
cs_stun Messages postés 10 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 7 avril 2006
19 nov. 2002 à 22:28
houla j ai pas encore le niveau mais comme je continue a apprendre
si je trouve qqchose je te l ecrit :)
Rejoignez-nous