[JAVA] synchronisation entre deux fenetre

Fermé
Ogtraba - 11 mai 2007 à 09:23
 ogtraba - 11 mai 2007 à 11:20
bonjour,
je vais essayer d'être le plus clair possible car mon probleme n'est pas simple.

j'ai une fenetre principale avec un bouton OK. lorsque j'appuis sur le bouton OK j'ouvre une fenetre de validation avec un bouton OK et un bouton annulé.

si j'appuis sur le bouton OK de la fenetre de validation je declanche une requete qui a été crée a partir d'infos collecté dans le fenetre principale (la requete est crée dans la fenetre principale et transite grace a des variable au travers des differents boutons et fenetres.

mon probleme est que pour recuperer le resultat de cette requete je doit attendre que l'utilisateur clique sur le bouton OK de la fenetre de validation.
En clair je doit arréter l'execution de la fenetre principale jusqu'au clic.

Comment puis-je faire cela?
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 845
11 mai 2007 à 10:03
Tu as dit : "En clair je doit arréter l'execution de la fenetre principale jusqu'au clic. "

Je comprends pas, qu'est-ce que tu veux dire par là ?
0
desolé pour le temps de reponse coupure de raiseau.

je crée la requete dans l'actionlistener du bouton OK de la fenetre principale. puis je l'envoie dans la fenetre de validation.

dans ce meme action listener je veut recuperer le resultat de la requete.

mais je me dit que je devrai peut etre le faire dans le main().

l'actionlistener est definit dans mon constructeur.
le mieux c'est que je te donne le code

ActionListener Edition = new ActionListener(){

public void actionPerformed(ActionEvent arg0) {

...

String Query = new String();//la requete qu'il faudra executer
Connection Conn = null;//la connection qui sera utiliser pour executer la requete

//si une des date est invalide on ne va pas plus loins
if (IsInvalid){
OK.removeActionListener(OK.MValid);
}
else{
/**
* établissement de la conection
* on utilise les fonctions Connect et Deconnect de InterfaceMenuDeroulanr2
*/
Conn = InterfaceMenuDeroulant2.Connect(Conn);

/************************************************
* recuperation des informations sur les agences
************************************************/
//vecteur pour recuperer les infos sur les agences
Vector <String> NumAg = new Vector <String>();
Vector <String> NomAg = new Vector <String>();
try {
Stm = Conn.createStatement();
ResultSet Agence = Stm.executeQuery("Select num_ag, nom_ag from agence;");

/**
* recuperation des infos dans deux vecteurs
* un pour les noms
* l'autre pour les numéros
*/
for (;Agence.next();){
NumAg.add(Agence.getString(1));
NomAg.add(Agence.getString(2));
}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// on créé les dates sous forme de string pour la requete
String DateDeb = JoursDebTest + "/" + MoisDebTest + "/" + ADeb;
String DateFin = JoursFinTest + "/" + MoisFinTest + "/" + AFin;

/*************************************************
* statistique globale
* ce fait seulement si la case globale est coché
*************************************************/

//on regarde s'il sagit de stat globale
if (Global.isSelected()
&& JoursDeb.getText().length() != 0
&& MoisDeb.getText().length() != 0
&& AnneeDeb.getText().length() != 0
&& JoursFin.getText().length() !=0
&& MoisFin.getText().length() != 0
&& AnneeFin.getText().length() != 0){
/***********************************************
* recuperation des libeles des types de pannes
***********************************************/
// vecteur pour recupérer les infos concernant les types de pannes
Vector <String> NumTypePanne = new Vector <String>();
Vector <String> NomTypePanne = new Vector <String>();
try {
ResultSet TypePanne = Stm.executeQuery("select id_type_panne, libelle_type_panne" +
" from Type_Panne;");
/**
* recuperation dans deux vecteurs
* voir agence
*/
for(; TypePanne.next();){
NumTypePanne.add(TypePanne.getString(1));
NomTypePanne.add(TypePanne.getString(2));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

for(int i = 0;i < NumAg.size();++i){
Query = "Select Id_panne, MONTH(Date), count(*) " +
"from panne" +
" where id_appareil in (select num_mat from materiel where num_ag = " + NumAg.get(i) + ")" +
" and date beetween '" + DateDeb + "' and '" + DateFin
+ "' group by MONTH(Date), id_panne";
System.out.println(Query);
}//for

//on remplie le champs de OK pour l'execution
OK.Conn = Conn;
OK.Requete = Query;
}//if global

//on recupere le resultat de la requete
//qui est executée dans la fenetre validation
//MON PROBLEME EST ICI IL FAUT QUE J'ATTENDE LE CLIC
ResultSet AEcrire = OK.Result;
try {
AEcrire.next();
System.out.println("AEcrire "+AEcrire.getString(1));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}//Actionperformed

};//ActionListener


il y a autre chose c'est que le bouton sur lequel et appliqué cet action listener lance la fenetre de validation.
0
je suis concient que c'est pas optimisé. mais je ne fait du java que depuis 3 semaines.

je pense que je devrai faire la recuperation des infos dans la fonction main je m'en sortirai peut etre mieux.
0