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

 Java Discussion :

client/server avec textarea


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 35
    Points
    35
    Par défaut client/server avec textarea
    Bonjour je suis nouveau dans le domaine de la programmation java (3 mois environ) j'ai comme travaux pratique de réaliser un chat que j'ai pu réaliser mais je souhaiterais l'améliorer avec des textarea .
    J'ai fait des recherche sur le site de sun,j'ai presque trouvé la solution en fait mais il y a un endroit ou ça bloque .
    Je vous donne mon code pour mieux vous expliquer:
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.*;
    import java.net.*;
    import java.util.*;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
     
    import server.TextDemo;
     
     
    public class Client extends JPanel implements ActionListener  {
        protected static final int PORT=4550;
        protected String nomclient="Matthieu";
        protected static final String IP="127.0.0.1";
     
        protected JTextField textField;
        protected JTextArea textArea;
        private final static String newline = "\n";
     
        public Client() {
            super(new GridBagLayout());
     
            textField = new JTextField(20);
            textField.addActionListener(this);
     
            textArea = new JTextArea(5, 20);
            textArea.setEditable(false);
            JScrollPane scrollPane = new JScrollPane(textArea);
     
            //Add Components to this panel.
            GridBagConstraints c = new GridBagConstraints();
            c.gridwidth = GridBagConstraints.REMAINDER;
     
            c.fill = GridBagConstraints.HORIZONTAL;
            add(textField, c);
     
            c.fill = GridBagConstraints.BOTH;
            c.weightx = 1.0;
            c.weighty = 1.0;
            add(scrollPane, c);
        }
     
        public static void main(String[] args){
            Socket s=null;
            try{
                DataInputStream dis;
                s=new Socket(IP,PORT);
                InputStreamReader isr=new InputStreamReader(s.getInputStream());//octet transformé du socket s en char
                BufferedReader canalLecture=newBufferedReader(isr);//buffer les char arrivant dans le canalLecture
                BufferedReader console=new BufferedReader(new InputStreamReader(System.in));//buff les char arrivant  
                PrintStream canalEcriture=new PrintStream(s.getOutputStream());//
                System.out.println("Connection établie:"+s.getInetAddress()+"port:"+s.getPort());
                String ligne;
                while(true){
                    javax.swing.SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            createAndShowGUI();
                        }
                    });
                    ligne=console.readLine();
                    if((ligne !=null)||(!ligne.equals(""))){
                        canalEcriture.println(ligne);
                    }    
     
                System.out.println(canalLecture.readLine());
                }
     
     
            }catch(Exception e){e.printStackTrace();}
     
        }
        public void actionPerformed(ActionEvent evt) {
            String text = textField.getText();
            textArea.append(text+ newline);
            textField.selectAll();
     
            //Make sure the new text is visible, even if there
            //was a selection in the text area.
            textArea.setCaretPosition(textArea.getDocument().getLength());
        }
        private static void createAndShowGUI() {
            //Create and set up the window.
            JFrame frame = new JFrame("Client");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            //Add contents to the window.
            frame.add(new Client());
     
            //Display the window.
            frame.pack();
            frame.setVisible(true);
        }
     
    }

    en fait le problème c'est que je dois modifier dans l'ActionPerfomed car il va utiliser text(variable de l'exemple du site de Sun ) pour mettre dans le TextArea et en faite il faudrait que je remplace cela par le canalLecture mais il s'agit d'un bufferedReader ,j'ai essayé de le remplacer par le canalLecture.readLine() .
    Mais le véritable problème est que dans l'ActionPerformed il ne peut accéder au buffer qui n'est pas une variable globale ,j'ai essayé de la passer en global mais y a encore un problème ^^ car je ne sais pas comment crée un buffer en global pour ensuite l'utiliser dans le main et bufferiser isr qui est le flot de données qui arrivent du serveur .
    Il faut que j'arrange mon programme aussi car pour l'instant je n'ai que combler mon programme avec celui de Sun pour le textarea et trouver qu'est ce que je devais modifier pour que les données entrante passent dans le textarea mais chaque chose en son temps ^^.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 35
    Points
    35
    Par défaut re
    En fait j'ai presque réussi mon programme voila ou j'en suis :
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.*;
    import java.net.*;
    import java.util.*;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
     
    import server.TextDemo;
     
     
    public class Client extends JPanel implements ActionListener  {
    	protected static final int PORT=4550;
    	protected String nomclient="Matthieu";
    	protected static final String IP="127.0.0.1";
     
        protected JTextField textField;
        protected JTextArea textArea;
        private final static String newline = "\n";
        public static String transpo;
        public Client() {
            super(new GridBagLayout());
     
            textField = new JTextField(20);
            textField.addActionListener(this);
     
            textArea = new JTextArea(5, 20);
            textArea.setEditable(false);
            JScrollPane scrollPane = new JScrollPane(textArea);
     
            //Add Components to this panel.
            GridBagConstraints c = new GridBagConstraints();
            c.gridwidth = GridBagConstraints.REMAINDER;
     
            c.fill = GridBagConstraints.HORIZONTAL;
            add(textField, c);
     
            c.fill = GridBagConstraints.BOTH;
            c.weightx = 1.0;
            c.weighty = 1.0;
            add(scrollPane, c);
        }
     
    	public static void main(String[] args){
    		Socket s=null;
    		try{
    			DataInputStream dis;
    			s=new Socket(IP,PORT);
    			InputStreamReader isr=new InputStreamReader(s.getInputStream());//octet transformé du socket s en char
    			BufferedReader canalLecture=new BufferedReader(isr);//buffer les char arrivant dans le canalLecture
    			BufferedReader console=new BufferedReader(new InputStreamReader(System.in));//buff les char arrivant  
    			PrintStream canalEcriture=new PrintStream(s.getOutputStream());//
    			System.out.println("Connection établie:"+s.getInetAddress()+"port:"+s.getPort());
    			String ligne;
    			while(true){   
     
    			    createAndShowGUI();
    			    transpo=canalLecture.readLine();
    			//	if((ligne !=null)||(!ligne.equals(""))){
    				//	canalEcriture.println(ligne);
    				//}	
     
    			//System.out.println(transpo);
    			}		
    		}catch(Exception e){e.printStackTrace();}
     
    	}
    	public void actionPerformed(ActionEvent evt) {
    		//transpo=console.readLine();
            String text = textField.getText();
            textArea.append(transpo+ newline);
            textField.selectAll();
     
            //Make sure the new text is visible, even if there
            //was a selection in the text area.
            textArea.setCaretPosition(textArea.getDocument().getLength());
        }
    	private static void createAndShowGUI() {
            //Create and set up the window.
            JFrame frame = new JFrame("Client");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            //Add contents to the window.
            frame.add(new Client());
     
            //Display the window.
            frame.pack();
            frame.setVisible(true);
    	}
     
    }
    En fait transpo est un string en global qui va stocker toute les données qui seront tappées au clavier grace a canalLecture.readLine(),mais si je met cette commande avant la création du GUI ,le GUI ne va pas se lancer et si je la met après le GUI les données censé etre dans transmise par transpo seront null donc svp est ce que quelqu'un pourrait me dire comment je pourrais mettre mon buffer en global svp si possible car j'ai pas de cours sur les buffer ni sur l'actionPerformed et j'ai quelques recherche .
    Devrais-je aussi poster une autre catégorie vu que la j'ai posté dans débutant mais je sais pas si c'est le bon endroit vu la complexité du problème.

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/03/2011, 03h46
  2. Connexion Client/Server avec MySQL
    Par Adomi Razaki dans le forum Administration
    Réponses: 1
    Dernier message: 15/05/2010, 09h23
  3. chat client server et textarea
    Par matthew974 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 03/12/2008, 18h58
  4. Deploiement d'Application Client/Server avec SQL Server
    Par Parrain dans le forum Bases de données
    Réponses: 17
    Dernier message: 24/04/2007, 14h09
  5. Application client server avec delphi
    Par Mus_mus dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/12/2006, 09h44

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