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

AWT/Swing Java Discussion :

Un bouton ouvre une fenetre : reception d'objet a sa fermeture


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut Un bouton ouvre une fenetre : reception d'objet a sa fermeture
    Bonjour,

    J'ai un petit soucis, malgré mes recherches, je reste bloqué.

    J'essaye de faire quelque chose de relativement simple pourtant :

    l'utilisateur clique sur un bouton
    une fenetre s'ouvre, elle contient un JPanel perso (ce Jpanel a une fonction "getObject" qui me créer un objet a partir des infos saisies dedans)
    l'utilisateur saisie ce qu'il veut, clique sur OK
    la fenetre se ferme et je récupère mon objet

    Une InputDialog ferait l'affaire ? Y a til possibilité de mettre mon panel perso dans ce dialog et de récupérer mon Objet quand l'uilisateur le ferme ?

  2. #2
    Membre confirmé Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Par défaut
    JPanel indique que vous allez utiliser le SWING

    crée une JFrame ou vous mettez votre JPanel

    essai au debut , le fait que la fenètre du dialogue "JDialogue" permet à l'utilisateur de saisir un text (le nom de l'objet) et avec un ou deux boutons,
    ou bien utilise une liste ou il y a tout les noms des objets qui peuvent ètre créé (je pense que c'est mieu)

    comme ca , si la réponse du JDialogue est OK , vous récupérer le nom séléctionné de la liste , ou bien le contenu du JTextField

    Et en fonction du nom récupéré, vous créez l'objet correspondant, en utilisant un "Switch case" ou un "if else"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    En fait, le but est de fabriquer dans une petite fenetre un objet complexe.

    je m'explique :

    je clique sur un bouton, ca ouvre une fenetre de dialog (un type Jdialog modal je suppose) avec disons un bouton ok et un bouton cancel.

    Le but est de pouvoir mettre dans cette fenetre de dialogue un Jpanel que j'ai précédemment créer pour pouvoir y saisir des informations complexes (autres que un jtextfield, on se comprends...) comme par exemple avoir 5 comboBox qui permettent de choisir 5 types d'objet différents.

    Enfin quand l'utilisateur clique sur ok, j'aimerais pouvoir créer un objet composé de toutes les informations saisies et le récupérer dans ma frame de départ.

    c'est plus clair ?

  4. #4
    Membre confirmé Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Par défaut
    un objet composé de toutes les informations saisies et le récupérer dans ma frame de départ.
    il n'y a pas un objet de ce type,

    se que tu peut faire (et je te l'est dit) , est de récupéré une liste de chaines de caractères,

    et en fonction de chaque chaine tu crée l'objet correspendant

    t'as compris ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    Mais bien sur que si que ca doit etre faisable. De plus je vais pas demander a l'utilisateur de me donner le nom de mes objets, c'est n'importe quoi.

    Prenons un exemple :

    J'ai une liste d'utilisateur a l'écran, quand je clique sur ajouter, une dialog s'ouvre et me demande :
    le nom, le prenom
    et me propose dans une comboBox : un role (parmis ceux que j'ai)
    puis dans une autre : une entreprise (parmis celles que j'ai)
    puis dans une autre : un type de voiture (parmis celles que j'ai)

    ce que j'aimerais au retour, est construire mon objet utilisateur, de manière a recevoir ceci :

    un Objet Utilisateur

    lui même composé de 2 string (nom, prénom), un objet role, un objet entreprise et un objet voiture.

    en gros, je fais "ok" puis j'apelle une methode getObjet sur ma fenetre de dialogue

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    Desfois que cela puisse intéresser quelqu'un, j'ai trouvé une solution :

    une interface "ObjectPanel" panel qui contient un objet définit comme suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface ObjectPanel
    {
        public Object getObject();
    }
    on utilise donc ensuite des panel de type :

    class blablaPanel extends JPanel implements ObjectPanel

    et qui donc possèdent la méthode getObject


    Ensuite pour le dialog j'ai écrit une classe qui étends JDialog, en voici le code :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    public class SaveDialog extends JDialog implements ActionListener
    {
         private static ObjectPanel op;
         private static SaveDialog dialog;
         private static Object value = null;
     
         /** Creates a new instance of SaveDialog */
         public static Object showDialog(Component comp,
              Component locationComp,
              String title,
              boolean modal,
              ObjectPanel objectPanel)
         {
              op = objectPanel;
              Frame frameComp = JOptionPane.getFrameForComponent(comp);
              dialog = new SaveDialog(frameComp,locationComp,title,modal,op);
              dialog.setModal(true);
              dialog.setVisible(true);
     
              return value;           
         }
     
         public void actionPerformed(ActionEvent e)
         {
              if("Save".equals(e.getActionCommand()))
              {
                   this.value = op.getObject();
              }
              this.dialog.setVisible(false);
         }
     
         private SaveDialog(Frame frame,Component locationComp,String title,boolean modal,ObjectPanel objectPanel)
         {
              this.op = objectPanel;
              this.setModal(modal);
              this.setTitle(title);
              JButton cancelButton = new JButton("Cancel");
              cancelButton.addActionListener(this);
              JButton saveButton = new JButton("Save");
              saveButton.addActionListener(this);
              getRootPane().setDefaultButton(cancelButton);
     
              JPanel buttonPane = new JPanel();
              buttonPane.setLayout(new BoxLayout(buttonPane,BoxLayout.LINE_AXIS));
              buttonPane.setBorder(BorderFactory.createEmptyBorder(0,10,10,10));
              buttonPane.add(Box.createHorizontalGlue());
              buttonPane.add(cancelButton);
              buttonPane.add(Box.createRigidArea(new Dimension(10,0)));
              buttonPane.add(saveButton);
     
              Container contentPane = getContentPane();
              contentPane.add((JPanel)op,BorderLayout.CENTER);
              contentPane.add(buttonPane,BorderLayout.PAGE_END);
              pack();
              setLocationRelativeTo(locationComp);      
         }
    et on l'apelle de cette manière :
    UserObjet uo = (UserObjet)SaveDialog.showDialog(panelquilanceledialog,
    positionnement,
    "titre du dialog",
    booleen pour fenetre modal,
    panneau de type ObjetPanel);

    Comme quoi, c'est possible de recevoir autre chose que des strings

  7. #7
    Membre confirmé Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Par défaut
    vous avez dit en premier temps:

    comme par exemple avoir 5 comboBox qui permettent de choisir 5 types d'objet différents.
    et ensuite , tout a fait le contraire :

    De plus je vais pas demander a l'utilisateur de me donner le nom de mes objets, c'est n'importe quoi.
    C'est se que tu dit qui est du n'import quoi !!!

    Il faut se renseigner sur les outils qu'on ne connait pas, pas sur la méthode

    le fait d'avoir les outils et de ne pas pouvoir les utilisé concerne la personne, car chacun a sa méthode

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    Humm, je pensais avoir été suffisamment clair, je rédéfinis l'exemple encore une fois ?

    je clique sur un bouton, j'ouvre une fenetre de dialogue modale (bloquante) avec
    un panel perso.

    Dans ce panel :
    2 choix à faire dans 2 comboBox.

    Dans la première, j'ai une liste de surnoms (Darky,Gandy)
    Dans la deuxieme, une liste de noms de voitures (A3, punto)

    L'utilisateur choisit les 2 qui l'interessent et clique sur ok.

    Je récupère un Objet "Conducteur", qui est définit ainsi :

    Conducteur
    {
    private User user;
    private Voiture voiture;
    }

    C'est plus clair comme ca ?

    Je me renseigne sur une méthode yassine, pour la simple et bonne raison que après avoir lu dans tout les sens la doc sur les Dialogs, je ne trouvais pas comment m'y prendre, donc j'ai demandé un coup de pouce ici.

    Merci pour l'exemple sans utiliser le JOptionPane, je n'y aurais pas pensé.

    Résolu donc

  9. #9
    Membre confirmé Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Par défaut
    c ton problème c'est pas le mien

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/04/2014, 01h47
  2. Pb d'affichage de bouton dans une fenetre (JFrame)
    Par doul21 dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 07/04/2008, 09h25
  3. probleme avec 1 bouton et une fenetre
    Par hunter99 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 30/03/2007, 10h01
  4. Script bash qui ouvre une fenetre Firefox
    Par vica6a dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 14/01/2007, 18h00
  5. [debutant] un bouton qui ouvre une fenetre
    Par dous dans le forum Composants
    Réponses: 6
    Dernier message: 21/11/2005, 09h55

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