Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affichage de deux fenetre

    9 décembre 2009 à 14:53:16

    Bonjour,
    svp je veux savoir comment puis-je faire un lien entre deux jtxtAREA de deux fentre pour que quand j''ecrit dans la premier tout s'affiche sur la deuxieme aussi merci voila le code que j'ai fait d'abord

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    
    
    package exam ;
    import javax.swing.*;
    import java.awt.*;
    import java.io.*;
    import java.lang.*;
    
    public class f1 extends javax.swing.JFrame{
        JPanel container = new JPanel();
        JButton affiche;
        JTextArea txt ;
        String s=null;
    
         f2 copyfen = new f2(this);
    
    
      public f1(){
            this.setSize(400,400);
            this.setTitle("exam");
            initCoponents();
             this.setContentPane(container);
            
    }
      private void initCoponents(){
              
                
           affiche = new JButton("affiche");
           txt = new JTextArea();
           txt.setPreferredSize(new Dimension(300, 122));
           container.add(txt);
           container.add(affiche);
      }
      public void zonetext(String s){
       txt.setText(s);     
      }
    
    
    }
    


    et pour la deuxieme fenetre voila le code

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package exam;
    import javax.swing.*;
    import java.io.*;
    import java.awt.*;
    import java.lang.*;
    
    
    
    /**
     *
     * @author genious
     */
    public class f2 extends JFrame{
        JPanel container =new JPanel();
       f1 copyfen1;
    
        public  f2(f1 s){
            copyfen1=s;
          this.setTitle("copoexam");
          this.setSize(300,300);
          initComponents();
          this.setContentPane(container);
        }
        public void initComponents(){
            JTextArea txt =new JTextArea();
            txt.setPreferredSize(new Dimension(300, 122));
            JLabel etat = new JLabel("dd");
            JButton affiche = new JButton("affiche");
            container.add(etat);
            container.add(txt);
            container.add(affiche);
            
        }
    
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      26 décembre 2009 à 23:33:35

      Bonsoir

      Une idée comme une autre : Utilise un thread.

      Bonsoir
      • Partager sur Facebook
      • Partager sur Twitter
        27 décembre 2009 à 11:10:04

        Je te dis tout ce qui suit sans certitude, je n'ai pas essayer, je ferai des tests après avoir répondu.



        Je suppose que tu instancies tes deux fenêtres dans la main. Et bien c'est par là que tu vas devoir travailler. Il faut que tu ais un lien entre les deux. Pour pouvoir travailler avec tes deux fenêtres ils faut qu'il y ai un lien quelque part. Moi je verrais ça comme ça. Ajoute un accesseur dans la classe de ta deuxième fenêtre qui renvoie ton jtxtAREA. Ensuite modifie le constructeur de ta deuxième fenêtre en ajoutant un paramètre jtxtAREA , et une variable d'instance de type jtxtAREA qui stockera cette valeur.

        Maintenant, quand tu crée ton objet f1, il sait à quel jtxtAREA il est lié.

        Finalement, ajoute un listener sur le jtxtAREA de ta première fenêtre et met à jour la valeur de la seconde grâce à l'objet jtxtAREA de la seconde fenêtre que tu as stocké.

        Note: ça ne fonctionne que si ton jtxtAREA de la seconde fenêtre est publique, et c'est pas bien beau, mais au moins c'est fonctionnel.


        Edit: J'avais mal lu ton code, je viens de voir que tu instancies ta deuxième fenêtre dans la première. Donc, j'ai dis que de la merde, enfin l'idée doit être bonne mais pas adaptée à ton code.

        J'ai testé ce que je dis par la suite, ça fonctionne.



        C'est du vite fait mais voilà, ça fonctionne.

        import java.awt.Dimension;
        import javax.swing.JButton;
        import javax.swing.JPanel;
        import javax.swing.JTextArea;
        
        public class f1 extends javax.swing.JFrame{
            JPanel container = new JPanel();
            JButton affiche;
            JTextArea txt ;
            String s=null;
            f2 copyfen;
        
        
        public f1(){
                this.setSize(400,400);
                this.setTitle("exam");
                initCoponents();
                 this.setContentPane(container);
                 this.setVisible(true);
                 copyfen = new f2(this);
                
        }
          private void initCoponents(){
                  
                    
               affiche = new JButton("affiche");
               txt = new JTextArea();
               txt.setPreferredSize(new Dimension(300, 122));
               container.add(txt);
               container.add(affiche);
          }
          public void zonetext(String s){
        	  txt.setText(s);     
          }
        
        
        }
        


        et

        import java.awt.Dimension;
        import java.awt.event.KeyEvent;
        import java.awt.event.KeyListener;
        
        import javax.swing.JButton;
        import javax.swing.JFrame;
        import javax.swing.JLabel;
        import javax.swing.JPanel;
        import javax.swing.JTextArea;
        
        
        
        /**
         *
         * @author genious
         */
        public class f2 extends JFrame{
            JPanel container =new JPanel();
           f1 copyfen1;
           JTextArea txt;
        
            public  f2(f1 s){
              copyfen1=s;
              copyfen1.txt.addKeyListener(new MyListener());
              this.setTitle("copoexam");
              this.setSize(300,300);
              initComponents();
              this.setContentPane(container);
              this.setVisible(true);
            }
            public void initComponents(){
            	txt =new JTextArea();
                txt.setPreferredSize(new Dimension(300, 122));
                JLabel etat = new JLabel("dd");
                JButton affiche = new JButton("affiche");
                container.add(etat);
                container.add(txt);
                container.add(affiche);
                
            }
            private class MyListener implements KeyListener
            {
        		public void keyPressed(KeyEvent arg0) {
        
        			txt.setText(copyfen1.txt.getText());
        		}
        
        		public void keyReleased(KeyEvent arg0) {
        
        			txt.setText(copyfen1.txt.getText());
        		}
        
        		public void keyTyped(KeyEvent arg0) {
        
        			txt.setText(copyfen1.txt.getText());
        			
        		}
            	
            	
            }
            
        
        }
        


        J'ai ajouté les setVisible.
        J'ai ajouté la classe privée du listener.
        J'ai modifié un peu ton code pour que tes objets soient déclarés en dehors de tes constructeurs, et initialisés à l'intérieur. C'est toujours comme ça qu'on fait.
        J'ai ajouté le listener au jtxtAREA de la première fenêtre. Ca ne fonctionnera que si ton objets jtxtAREA est public.

        Piste d'améliorations: mettre tes variables d'instance en private, et ajouter une méthode dans ta classe f1 prenant en argument un listener et qui ajoute ce listener au jtxtAREA.
        • Partager sur Facebook
        • Partager sur Twitter

        Affichage de deux fenetre

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown