IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

Comment un JDialog peut me retourner une valeur ?


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut Comment un JDialog peut me retourner une valeur ?
    Salut.
    J'ai une fiche de type JFrame et une class qui etand la classe JDialog(DialogPerso). Je veux afficher la class DialogPerso et puis recuperer les valeurs entrees dans cette boite de dialogue. Je sais pas si c'est claire mais voila je vous monter le code qui marche pas comme je veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    package dev;
     
    import javax.swing.JFrame;
     
    public class MainFiche {
    	public static void main(String[] args) {
    		JFrame frame = new JFrame("MainFicher");
    		String init = "info initiale ";
    		DialogPerso dialogPerso = new DialogPerso(frame,true,init);
    		dialogPerso.setVisible(true);
     
    		// Ca doit afficher "info initiale Info de JDialog ajoute" mais ....
    		// Ca donne seulement "info initiale " ?!
    		System.out.println(init);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setSize(400,300);
    		frame.setVisible(true);
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    package dev;
     
    import java.awt.Frame;
     
    import javax.swing.JDialog;
     
    public class DialogPerso extends JDialog {
    	private static final long serialVersionUID = 1L;
    	private String information = "";
     
    	public DialogPerso(Frame f, boolean modal,String information) {
    		super(f, modal);
    		this.information = information;
    		this.information += "Info de JDialog ajoute";
    	}
     
    }
    Merci
    Even the biggest journey, starts with a single step.

  2. #2
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Points : 220
    Points
    220
    Par défaut
    Il est bizarre ton bug ..

    et de plus je vois pas trop le rapport entre le titre de ton post et ton pb m'enfin ...

    Tu as essayé ca ?

    public DialogPerso(Frame f, boolean modal,String information) {
    super(f, modal);
    this.information = information + "Info de JDialog ajoute";
    }

  3. #3
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Points : 148
    Points
    148
    Par défaut
    Je vois pas pourquoi tu t'embetes à etendre une JDialog..

    Tu rentres ton message à la main et tu récupéres ce qu'a entré l'utilisateur
    Une JOptionPane réponds à ton besoin


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String UserReponse = (String) JOptionPane.showInputDialog(taFrame,"Utilisateur écris quelque chose STP","Ici le titre de ma fenêtre", JOptionPane.PLAIN_MESSAGE);
    Tiens moi au courant

  4. #4
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    D'accord. C'est pas assez claire mais je veux faire un truc pareil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String infoRecuperee = new DialogPerso(frame,true).setVisible(true);
    ce qui est impossible bien sur mais ce que je veux faire. J'ai montre le code car j'ai cru que de passer en parametre une variable qui va stocker la valeur qu'on veut retourner c'est la bonne maniere de faire ce genre de truc.
    Even the biggest journey, starts with a single step.

  5. #5
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    PoPeio c'est pas si simple que je l'ai montre. En fait c'est une fenetre complique et donc JOptionPane ne me suffit pas
    Even the biggest journey, starts with a single step.

  6. #6
    Membre du Club Avatar de bubu56
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    Quand tu utilises un dialog, le mieux est de créer un attribut et de lui associer un 'getter' et eventuellement un 'setter':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package dev; 
     
    import javax.swing.JFrame; 
     
    public class MainFiche { 
       public static void main(String[] args) { 
          JFrame frame = new JFrame("MainFicher"); 
          String init = "info initiale "; 
          DialogPerso dialogPerso = new DialogPerso(frame,true,init); 
          dialogPerso.setVisible(true); 
          init=dialogPerso.getInformation();
     
          // Ca doit afficher "info initiale Info de JDialog ajoute" mais .... 
          // Ca donne seulement "info initiale " ?! 
          System.out.println(init); 
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
          frame.setSize(400,300); 
          frame.setVisible(true); 
       } 
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    package dev; 
     
    import java.awt.Frame; 
     
    import javax.swing.JDialog; 
     
    public class DialogPerso extends JDialog { 
       private static final long serialVersionUID = 1L; 
       private String information = ""; 
     
       public DialogPerso(Frame f, boolean modal,String information) { 
          super(f, modal); 
          this.information = information; 
          this.information += "Info de JDialog ajoute"; 
       } 
     
      public String getInformation(){
         return information;
      }
     
    }

  7. #7
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Points : 148
    Points
    148
    Par défaut
    Je pense que utiliser une JOptionPane c'est très propre aussi ..


    Qu'en pensez vous ??

  8. #8
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Points : 148
    Points
    148
    Par défaut
    Par contre je suis tout à fait d'accord avec toi BuBu

  9. #9
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    bubu56 j'ai pense aussi a ca mais je savais pas si c'est propre. Si je vais comme ca je recupere les informations en mode polling (si tu vois ce que je veux dire) et moi je veux les recuperer en mode push( c'est la JDialog qui me donne la valeur a l'instant donne)
    Si vous n'avez pas d'autre propositions je vais coder cette approche

    En tout cas
    Merci a vous tous
    Even the biggest journey, starts with a single step.

  10. #10
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Points : 220
    Points
    220
    Par défaut
    Bah moi je suis plus d'accord avec bubu56

    Arrive un moment quand tu as des fenetres "compliqué", le plus simple est de personnaliser ses propres JDialog en y ajoutant des attributs puis de faire des accesseurs dessus genre

    public String getNomUser(){
    return maTextBoxUser.getText();
    }

    Je trouve ca plus propre que les JOptionPane (meme si je les utilise pour les notifications d'erreur/alerte ou autres boites de dialoque simple.

  11. #11
    Membre du Club Avatar de bubu56
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par scifire
    bubu56 j'ai pense aussi a ca mais je savais pas si c'est propre. Si je vais comme ca je recupere les informations en mode polling (si tu vois ce que je veux dire) et moi je veux les recuperer en mode push( c'est la JDialog qui me donne la valeur a l'instant donne)
    Si vous n'avez pas d'autre propositions je vais coder cette approche

    En tout cas
    Merci a vous tous
    je suis pas sur de voir ce que tu veux dire ...

    sinon, juste pour expliquer pourquoi ca marchait pas :
    un String est immuable (ie on ne peut pas changer la valeur d'un string) donc quand tu fais str +="une autre chaine"; tu crées une nouvelle string et tu fais 'pointer' la 'référence' str vers cette chaine. c'est donc normal que ta 'référence' de base (celle de ton main) ne 'pointe' pas vers la chaine modifiée...

  12. #12
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Points : 220
    Points
    220
    Par défaut
    Bah si tu veux que ca "push", je pense qu'il faudrait threader la fenetre fille et que cette dernière envoie les infos à la fenetre mère.

  13. #13
    Membre du Club Avatar de bubu56
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    si tu veux modifier directement la valeur de ta frame à partir de ton dialog, soit tu donnes accès à la valeur de la frame à ton dialog (en mettant public ou protected) soit tu crées des getters settters dans ta frame et tu les appelles directement dans ton dialog... (de toute facon tu passes déjà la frame au constructeur de ton dialog donc l'accès est facile...)

  14. #14
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 217
    Points : 220
    Points
    220
    Par défaut
    Citation Envoyé par bubu56
    un String est immuable (ie on ne peut pas changer la valeur d'un string) donc quand tu fais str +="une autre chaine"; tu crées une nouvelle string et tu fais 'pointer' la 'référence' str vers cette chaine. c'est donc normal que ta 'référence' de base (celle de ton main) ne 'pointe' pas vers la chaine modifiée...
    Tu es sur de ce que tu avances la ??? car perso le += ou &= sur une string ne m'a jms fait de mauvaises surprises

    D'ailleurs au passage il faut mieux utiliser la fonction de concaténation sur une string que les += ou &= car cette dernière est plus performance d'un point de vue tps d'execution.

    ______________

    Apres recherche... en effet je suis OK avec toi ! (je viens d'apprendre qqchose , la journée n'aura pas servie a rien :] )

  15. #15
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    bubu56 je te remercie beaucoup. Moi aussi j'ai cru que c'est lie a la classe String qui est un objet immutable mais j'etais pas sur.

    Un grand merci a tous !
    Even the biggest journey, starts with a single step.

  16. #16
    Membre du Club Avatar de bubu56
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par _beber85
    Citation Envoyé par bubu56
    un String est immuable (ie on ne peut pas changer la valeur d'un string) donc quand tu fais str +="une autre chaine"; tu crées une nouvelle string et tu fais 'pointer' la 'référence' str vers cette chaine. c'est donc normal que ta 'référence' de base (celle de ton main) ne 'pointe' pas vers la chaine modifiée...
    Tu es sur de ce que tu avances la ??? car perso je += ou &= sur uns string ne m'a jms fait de mauvaises surprises

    D'ailleurs au passage il faut mieux utiliser la fonction de concaténation sur une string que les += ou &= car cette dernière est plus performance d'un point de vue tps d'execution.
    je suis sur de ce que j'avance ... et ca ne fait pas de mauvaise surprise...
    ce qui est plus performant c'est d'utiliser un stringbuilder ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/06/2011, 07h29
  2. Réponses: 5
    Dernier message: 31/01/2008, 17h05
  3. Réponses: 1
    Dernier message: 20/11/2007, 17h17
  4. Comment retourné une valeur pour le main
    Par kurkLord dans le forum Langage
    Réponses: 3
    Dernier message: 31/05/2007, 22h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo