[Swing] Information sur des enchainements de fenêtres

kokojavafr Messages postés 23 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 12 septembre 2005 - 27 juil. 2005 à 16:56
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 - 28 juil. 2005 à 11:41
(Re)Bonjour,

je suis en train de faire une ihm pour un projet en ce moment.

Je dois ouvrir de nouvelle fenêtres qd je clique sur certains boutons.

Pour le moment, lorsque je clique sur le bouton en question, je met
dans la fonction associé au click de bouton un
ihmLaFenetreQueJeVeux.main(null) ..

Cest vachement crade je trouve ...

Mais vu que c est juste une ihm pour le moment, je peux tout à fait laisser ca comme ca.

Cependant, il va falloir que je code le projet associé, et j aimerais
savoir comment faire pour passer "proprement" d'une fenêtre à une
autre, sans faire appel à des main ..



Voila, je pense que c est assez simple, mais je vous pose tout de même
la question, n'ayant pas trouvé de solutions pour le moment.


Merci d'avance

8 réponses

cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
27 juil. 2005 à 17:08
Si ce sont des fenetres Swing, genre JFrame et tout, et bien rien de plus facile, tu fais le non de frame.show();
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
27 juil. 2005 à 17:09
/auteurdetail.aspx?ID=246699 Si ce sont des fenetres Swing, genre JFrame et tout, et bien rien de plus facile, tu fais le nom de frame.show();

désolé, erreur de frappe
0
kokojavafr Messages postés 23 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 12 septembre 2005 1
27 juil. 2005 à 17:19
A t on besoin de redéfinir la méthode show ?

Car j'ai l'erreur suivante :

src\IHM\ihmAccueil.java:626: non-static method show() cannot be referenced from a static context



Code de la méthode:

private void btnAjoutProfessionMouseClicked(java.awt.event.MouseEvent evt)

{

ihmAjoutProfession.show();

}



sachant que : public class ihmAjoutProfession extends javax.swing.JFrame

{

.................

}



Cependant, au sein d'une classe, un this.show(false) marche parfaitement bien pour arreter l'affichage de la classe.



Autre question: L'appel à la méthode entraine t elle directement la
libération de la mémoire utilisée par cette frame (java ayant un
garbage collector) dans le cas ou il lui dit d'arrêter d'afficher cette
frame?
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
27 juil. 2005 à 18:08
Alors depuis java 1.4 je crois tu ne dois plus faire de this.show(), mais plutot du this.dispose(), ce qui libère la memoire. Sinon tu dois faire pour masqeur la fenetre this.serVisible(true ou false).


Pour ton erreur en fait ton objet ihmAjoutProfession doit être definit en static dans ta méthode, ce qui n'ai pas autoriser. Si tu souhaite laisser cela en static créer une fonction du style afficheToi dans ihmAjoutProfession tu la mets en static . Et dedans tu fais this.show()

Comme ca je pense que ca devrait fonctionner
0

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

Posez votre question
kokojavafr Messages postés 23 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 12 septembre 2005 1
28 juil. 2005 à 10:39
finalement, j ai fait comme ca :



private void btnAjoutProfessionMouseClicked(java.awt.event.MouseEvent evt)

{


ihmAjoutProfession tmp = new ihmAjoutProfession();

tmp.setTitle("Pervilla: Ajouter une profession");

tmp.setSize(200,130);

tmp.show();

}



Ce qui m'amène à un autre probleme ..

Dans la fenêtre ihmAjoutProfession, j'ai une méthode d'ajout d'une
profession qui doit modifier une JComboBox dans ma fenetre ihmAccueil.

J'utilise un singleton pour avoir ma liste de choix possible dans ma
JComboBox, que je rempli au depart en parsant un fichier de sauvegarde.

Lorsque je clique sur le bouton ajouter de la fenetre
ihmAjoutProfession, j'aimerais que ma JComboBox de la fenetre
ihmAccueil se mette à jour en prenant en compte ce que j ai rajouté.



Voici le code en question :

public class ihmAccueil extends javax.swing.JFrame

{

....

public void updateBoxNomMetier(String toAdd)

{

System.out.println("add :" + toAdd);

BoxNomMetier.addItem(toAdd);

}

}



public class ihmAjoutProfession extends javax.swing.JFrame

{

..

}



Je n'arrive pas à acceder depuis la classe ihmAjoutProfession à la méthode updateBoxNomMeter de la class ihmAccueil.

J'ai modifié le extends de ihmAjoutProfession en le remplacant par un
extends ihmAccueil, et en utilisant super.updateBoxNomMetier()

Dans ma fenetre ihmAjoutProfession, je retrouve maintenant les menu du
haut (du genre fichier, etc .. ) de ihmAccueil, ce que je ne veux pas
(mais c est normal, vu qu'elle hérite de ihmAccueil), et lors de
l'ajout, il ne se passe rien dans la fenetre ihmAccueil (bien qu'un
getItemCount() en début et en fin de ma fonction update m'indique bien
que le nombre d'item a augmenté)



J'espère que mon problème est pas trop mal expliqué ...

Quelqu'un a t il une solution ?
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
28 juil. 2005 à 11:04
Tu as cas dans le constructeur de ihmAjoutProfession passer en paramètre ton ihmAccueil donc faire en fait

ihmAjoutProfession temp = new ihmAjoutProfession (this); en supposant que ton bouton soit bien dans ihmAccueil
0
kokojavafr Messages postés 23 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 12 septembre 2005 1
28 juil. 2005 à 11:10
merci beaucoup, cela marche tres bien

j'avais pensé faire ceci, mais je trouvais cela un peu crade.

N'y a t il pas un moyen un peu plus propre , parce que si je dois a chaque fois passer une fenetre dans mes constructeurs ...
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
28 juil. 2005 à 11:41
Ben sinon tu mets un modificateur en static dans ton ihmAccueil et qui lui modifira le comboBox. Et tu l'appelle depuis l'ecterieur avec ihmAccueil.le_nom_de_ton__modif
0
Rejoignez-nous