Page 1 sur 2 12 DernièreDernière
Résultats de 1 à 10 sur 14

Sujet : récupérer la valeur ds 1 liste déroulant

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    3

    récupérer la valeur ds 1 liste déroulant

    Bonjour à tous.

    Je débute en Java et je dois afficher la valeur sélectionnée dans une liste déroulante à l\'intérieur d\'un champ texte.

    Je suis bien parti mais apparemment, le texte \"nouveau texte\" ne s\'insère pas dans le champ :

    Voici mon script, d\'avance merci.

    Code:

    Code:
    import java.awt.*; 
    import java.awt.event.*; 
    import java.awt.geom.*; 
    import javax.swing.*;    
    import javax.swing.event.*; 
    
    public class New 
    { 
       public static void main(String[] args) 
       {  
          TextTestFrame2 frame = new TextTestFrame2(); 
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
          frame.show(); 
       } 
    } 
    
    class TextTestFrame2 extends JFrame 
    {  
       public TextTestFrame2() 
       {  
          setTitle(\"Editeur\"); 
          setSize(WIDTH, HEIGHT); 
          Container contentPane = getContentPane(); 
    
          // ajouter un panneau avec des champs texte 
          JPanel panel = new JPanel(); 
          
          pRectangle = new ProprietesRectangle(); 
          panel.add(pRectangle); 
          
          liste = new Liste(); 
          panel.add(liste); 
    
          contentPane.add(panel, BorderLayout.SOUTH);      
       }      
       private ProprietesRectangle pRectangle; 
       private Liste liste; 
       private static final int WIDTH = 300; 
       private static final int HEIGHT = 300; 
    } 
    
    class ProprietesRectangle extends JPanel implements ActionListener 
    { 
      public ProprietesRectangle() 
      { 
        hauteurField = new JTextField(\"12\", 3);    
         add(hauteurField); 
      } 
      
      public void actionPerformed(ActionEvent event) 
      { 
        /******************************************** 
           a cet endroit, le println fonctionne 
           mais pas le changement de valeur du champ 
        ********************************************/ 
        System.out.println(\"ça marche\"); // fonctionne 
        hauteurField.setText(\"nouveau texte\"); // n\'insère pas le nouveau texte dans le champ 
      } 
      
      private JTextField hauteurField; 
    } 
    
    class Liste extends JPanel 
    { 
      public Liste() 
      { 
        JLabel figureLabel = new JLabel(\"Figure: \"); 
        listeDeroulante = new JComboBox(new String[] {\"Cercle 1\", \"Rectangle 1\", \"Triangle 1\"}); 
        add(listeDeroulante, BorderLayout.EAST); 
    
        ActionListener listener = new ProprietesRectangle(); 
        listeDeroulante.addActionListener(listener); 
      } 
      private JTextField hauteurField; 
      private JComboBox listeDeroulante; 
    }

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    salut Kyfren

    Plusieurs choses :

    Ton code est propre a regarder c\'est bien.
    J\'ai copié tes classes dans mon editeur et apres compilation il a tourné tout de suite C\'est un autre bon point.

    Si tu rajoute une simple ligne du style : System.out.println(pRectangle.getText());
    derrière : pRectangle.setText(\"nouveau texte\"
    tu constatera que le JTextField pRectangle prend bien la valeur que tu lui assigne.
    Le problème ne se trouve donc pas ici.
    En fait je pensais au début en regardant ton code qu\'il sufisait de rajouter un truc du genre : pRectangle.repaint();
    pour que cela fonctionne et ce n\'était pas le cas.
    Dans cette même idée je me suis dit qu\'il falait peut être faire un refresh mais de toute la fenêtre.
    La c\'est devenu tout d\'un coup supert hard.
    En fait tu as decomposé ton code en 4 classes et j\'avais du mal a voir comment faire un : frame.repaint();
    dans ton code de gestion d\'evenement dans la mesure ou cette frame était hors de porté et ou j\'avais la tête dans le sac.
    Je me suis dis qu\'il valait mieux réecrire un truc simple dans la mesure ou vue le nombre d\'objet utile il n\'était pas nécessaire d\'en faire trop.

    Code:
    /*
     * Created on 31 mars 2004
     *
     */
    package zeb;
    
    
    import java.awt.*; 
    import java.awt.event.*; 
    import java.awt.geom.*; 
    import javax.swing.*;    
    import javax.swing.event.*;
    
    /**
     * @author Administrateur
     */
    
    public class Soluce extends JFrame implements ActionListener {
    
        private JTextField pRectangle; 
        private JComboBox listeDeroulante; 
        private JPanel panel;
        private String[] Options; 
    	
        private static final int WIDTH = 300; 
        private static final int HEIGHT = 300; 
    
        public Soluce(){
            panel = new JPanel(); 
            pRectangle = new JTextField(\"ancien texte\", 10);
            Options = new String[] {\"Cercle 1\", \"Rectangle 1\", \"Triangle 1\"};
            listeDeroulante = new JComboBox(Options); 
            listeDeroulante.addActionListener(this);
            panel.add(listeDeroulante);
            panel.add(pRectangle);
            setContentPane(panel);
        }
    
        public static void main(String[] args) {
    		
            Soluce frame = new Soluce(); 
            frame.setTitle(\"Editeur\");
            frame.setSize(WIDTH, HEIGHT); 
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            frame.show(); 
        }
    
        public void actionPerformed(ActionEvent arg0) {
            /********************************************* 
             a cet endroit, le println fonctionne aussi
            	         et l\'objet pRectangle aussi 
            *********************************************/ 
            System.out.println(\"ça marche\"); // fonctionne 
            pRectangle.setText(\"nouveau texte\"); // n\'insère pas le nouveau texte dans le champ 
            System.out.println(pRectangle.getText());		
        }
    }
    Je pense que les debutants qui essaient de penser objet en fon trop et que les moins débutants son fainéants !
    Tu as donc utilisé 4 fichiers, donc 4 cluster sur ton disque (c\'est beaucoup) pour 111 lignes il me semble.
    Et moi 61 lignes pour 1 fichier et un cluster disque. (j\'ai gagné ?)
    Trève de plaisanterie le reproche que je ferait si j\'en avais le droit c\'est qu\'on ne comprend pas bien ou tu veux en venir dans tes classe car elle sont bizarement nomées et certains objet il me semble ne sont même pas utilisés.
    J\'espère que mon code va t\'aider a faire tourner le tien (en fait il sagit du tien que j\'ai mis dans un autre ordre) et que tu donnera des nouvelles.

    A bientôt :wink:

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    3
    Un grand merci Zeb !

    Tu as vu clair tout de suite : j\'ai probablement essayé d\'en faire trop.

    En fait, j\'apprend avec un bouquin (Au coeur de Java 2 - Campus Press) et je me suis inspiré de quelques un des exemples du livre.

    Ta solution est beaucoup plus claire et accessible à un débutant.

    Cependant, je m\'intérroge tt de mm sur le fonctionnement des grosses applications :
    lorsqu\'il y à bcp de classes, comment les objets Listener font ils pour changer l\'aspect d\'object situés dans d\'autres classes (c le pb que j\'avais ds mon ancien script) ????
    Il me semble que ce genre de situation doit pourtant être courant ... Si t\'as un exemple, je suis preneur !

    .... et merci encore pour la soluce, vraiment !

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    Hello kyfren

    Je n\'ai pas d\'example sous la main mais on peut quand même resoner sur les grosse Appli.

    l\'idée c\'est (pour moi) que dans de tel appli, une modelisation objet pourrai se traduit par trois niveau de base.

    Le niveau presentation
    Le niveau metier ou applicatif
    Le niveau stocage ou persistance

    dans cette idée tu trouve déja les grandes fonctionalités d\'une application : offrir une interface a l\'utilisateur (presentation) pour lui permettre d\'effectuer un travail (métier) et conserver eventuellement le fruit de son travail (persistance).

    ton exercice se trouve surtout impliqué dans l\'aspect presentation, c\'est la que tu vas manipuler soit du AWT SWING ou un navigateur au travers des applications Web. dans cette optique il n\'est pas nécéssaire d\'en faire trop et la soluce est adaptée a une petite fenêtre qui elle pourrai être une sous fenêtre d\'une principale.
    dans ce cas tu n\'aurai pas un main dans la classe soluce mais tu agirai dans le constructeur par example et tu trouverai les même objet dans la même portée de classe(donc pas de prob). la communication entre les deux fenêtres etant orquestrée ailleur.(du moins C ce que je ferai personnellement)

    Une autre source de service qui impliquerai un enssemble plus important de classe, serait la mise en oeuvre pour une couche d\'interface client d\'un pattern de type MVC (Modele Vue Controleur) (voir design pattern sur le web)
    La Vue represente tes données presentées a un instant T (issues du Modele)
    Le Modele lui vas jouer un role de manager du shema objet de ton appli (les clients, les factures, ...)(C\'est de lui que decoulera la persistance)
    et le Controleur jouera le role d\'un chef d\'orchestre en position frontale par rapport aux agicement de l\'utilisateur(il agira sur le model et choisira les vues adaptées qui elle seront mise a jour depuis le model).
    Dans cette optique un enssemble de plusieur classes s\'avère gage de robustesse et de stabilité de l\'application.
    De plus une telle architecture te facilite et le develloppement et la maintenance qui est la partie la plus difficile de la vie d\'une application(pense deja au debugage et tu comprendra ce qu\'est la relecture du code d\'un autre pour faire un extension).

    Le principe de base pour créer tes objet est de ce demander si ce que tu es en train d\'ecrire appartient bien a l\'objet. (c\'est celui qui sait qui fait) il faux pour ça parfois faire abstraction de ton découpage mental pour penser un peux plus haut dans l\'application.
    Il est difficile de prendre du recul quand tu code mais c\'est nécéssaire.(le plus dur etant de penser une modelisation de l\'application simple au départ tellement tu est obsédé par tes choix technologiques,tes doutes, tes question sur les cas d\'utilistaion(Use Case) que le client te demande etc etc ...)

    UML et les design Pattern peuvent t\'aider beaucoup dans ton apprentissage (je parle d\'experience je suis comme toi j\'apprend !)

    sur ce donne nous des nouvelles de temps en temps (si tu veux faire de la pub pour moteur prog n\'esite surtout pas ) et continue a poser des questions elles servent a tous y compris a ceux qui y reponde :wink:

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    3
    Merci pour toutes ces précisions.

    Je n\'hésiterais pas à utiliser ce forum, ainsi qu\'a le promouvoir ...

    A bientot.

    Kyfren

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    2
    Hello les gens !

  7. #7
    Membre MP
    Inscrit
    août 2013
    Messages
    2
    Sorry G trouvé ce site via google, on ma demandé de m\'enregistrer, et yavait 1 zone de commentaire... j\'avais pas pigé que C T mon post en fait !! :-/
    Sorry les gars !

  8. #8
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    Pas de prob ZoranJR et bienvenue chez MoteurProg :wink:

  9. #9
    Visiteur MP
    Visiteur MP
    merci !!

    En tout cas, il semblerait au moins que sur ce site, il y ait non seulement des réponses, mais en plus, qui fonctionnent !! :

    Ayant moi-même fait un peu de java pdt mes études, j\'espère pouvoir p-e aider aussi !

    Je vais de suite mettre ce site dans mes favoris, je pense que je reviendrai assez souvent :P:

    ++ all !!

  10. #10
    Membre MP
    Inscrit
    août 2013
    Messages
    402
    re-Zeb
    t\'as jamais songé à faire prof?
    je pense que ce serait plus simple d\'apprendre la programmation sin on avait des profs comme toi.
    :wink:
    Thesly

Page 1 sur 2 12 DernièreDernière

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!