bonjour, s'il vous plait, est ce ke vous avez trouvé des difficultés pour me fournir le code, ke vous m'avez promis pour hier, voila j'ai trouvé un code qui marche bien, j'ai essayé de l'adapter a mon application mé j'ai pa réussit, vous pouvez inspirer de ce code, et merci.
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.util.*;
import java.net.*;
import java.io.*;
import java.lang.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.border.*;
import javax.swing.colorchooser.*;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
import javax.accessibility.*;
public class tp2
{
public static void main(String arg[])
{
JFrame win = new Fenetre();
win.show();
}
}
// la classe fenetre()
class Fenetre extends JFrame implements ActionListener
{
// le constructeur
public Fenetre()
{
// on met un titre
setTitle("Chat moi");
// on definit la taille
setSize(500, 400);
// on met un look and feel par defaut
updateLookAndFeel(metal);
// on gere l'appui sur la touche fermeture de la fenetre
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
} );
setLocation(100,100);
/******************************************************************
on indique le mode de placement des composants avec un Layout
Ici on utilise un Layout de type GridBagLayout ce qui permet
d'aligner les composants verticalement ou horizontalement, sans
qu'ils soient forcement de meme taille.
L'objet de type GridBagContraints permet d'apporter des
contraintes aux composants du Layout.
******************************************************************/
// on travaille avec des calques ou des panneaux
Container pane = getContentPane();
pane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
/*****************************************************************
fill permet de déterminer s'il faut redimensionner le composant,
et ici uniquement horizontalement
******************************************************************/
c.fill = GridBagConstraints.HORIZONTAL;
/*****************************************************************
Ici on va ajouter des composants dans la fenetre. On utilise
plusieurs parametres:
- weightx:permet de redistribuer l'espace libre horizontal (s'il
y a) en fonction du "poids" du composant. Ainsi un composant
dont weightx vaudra zero n'aura pas d'espace en plus.
- gridx:indique la colonne où on place le composant
- gridy:indique la ligne où on place le composant
******************************************************************/
// permet de sauter une ligne par rapport au haut de la fenêtre
c.weightx = 0;
c.gridx = 0;
c.gridy = 0;
c.gridwidth=4;
c.gridheight=1;
JPanel p=new JPanel();
pane.add(p,c);
c.weightx = 0;
c.gridx = 0;
c.gridy = 1;
c.gridwidth=2;
c.gridheight=1;
//texte de saisie du message
JPanel labelpanel1=new JPanel();
JLabel l1=new JLabel("Ecrire le message à envoyer");
labelpanel1.add(l1);
pane.add(labelpanel1,c);
c.weightx = 0;
c.gridx = 2;
c.gridy = 1;
c.gridwidth=2;
c.gridheight=1;
// zone lecture
JPanel labelpanel2=new JPanel();
JLabel l2=new JLabel("Affichage des messages reçus");
labelpanel2.add(l2);
pane.add(labelpanel2,c);
c.fill = GridBagConstraints.BOTH;
c.weightx = 100;
c.weighty = 100;
c.gridx = 0;
c.gridy = 2;
c.gridwidth=2;
c.gridheight=1;
TextArea1=new JTextArea("");
TextArea1.setFont(new Font("TimesRoman",Font.BOLD,12));
pane.add(new JScrollPane(TextArea1),c);
c.weightx = 100;
c.weighty = 100;
c.gridx = 2;
c.gridy = 2;
c.gridwidth=2;
c.gridheight=1;
TextArea2=new JTextArea("");
TextArea2.setFont(new Font("TimesRoman",Font.ITALIC,12));
pane.add(new JScrollPane(TextArea2),c);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0;
c.weighty = 0;
c.gridx = 0;
c.gridy = 3;
c.gridwidth=1;
c.gridheight=1;
pane.add(new JLabel("Port:"),c);
c.weightx = 0;
c.gridx = 1;
c.gridy = 3;
c.gridwidth=1;
c.gridheight=1;
text2=new JTextField(20);
pane.add(text2,c);
c.weightx = 0;
c.gridx = 0;
c.gridy = 4;
c.gridwidth=1;
c.gridheight=1;
pane.add(new JLabel("Serveur: "),c);
c.weightx = 0;
c.gridx = 1;
c.gridy = 4;
c.gridwidth=1;
c.gridheight=1;
text3=new JTextField(20);
pane.add(text3,c);
c.weightx = 0;
c.gridx = 2;
c.gridy = 3;
c.gridwidth=1;
c.gridheight=2;
pane.add(new JLabel("Port: "),c);
c.weightx = 0;
c.gridx = 3;
c.gridy = 3;
c.gridwidth=1;
c.gridheight=2;
text4=new JTextField(20);
pane.add(text4,c);
c.weightx = 0;
c.gridx = 0;
c.gridy = 5;
c.gridwidth=2;
c.gridheight=1;
JPanel panel1=new JPanel();
button1=new JButton("< Envoyer >");
button1.setToolTipText("Cliquer ici pour envoyer le message");
button1.addActionListener(this);
panel1.add(button1);
pane.add(panel1,c);
c.weightx = 0;
c.gridx = 2;
c.gridy = 5;
c.gridwidth=2;
c.gridheight=1;
JPanel panel2=new JPanel();
button2=new JButton("Ecouter");
button2.setToolTipText("Cliquer ici pour lancer le serveur d'écoute");
button2.addActionListener(this);
panel2.add(button2);
pane.add(panel2,c);
c.weightx = 0;
c.gridx = 0;
c.gridy = 6;
c.gridwidth=4;
c.gridheight=1;
JPanel panel3=new JPanel();
button3=new JButton("Créer Socket client");
button3.setToolTipText("Cliquer ici pour créer le socket du client avant d'envoyer des messages");
button3.addActionListener(this);
panel3.add(button3);
pane.add(panel3,c);
c.weightx = 0;
c.gridx = 0;
c.gridy = 7;
c.gridwidth=4;
c.gridheight=1;
JPanel panel4=new JPanel();
JButton button4=new JButton("Quitter !");
button4.setToolTipText("Cliquer ici pour quitter le programme");
button4.addActionListener(this);
panel4.add(button4);
pane.add(panel4,c);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("Créer Socket client"))
{
try
{
// client
Integer I1=new Integer(text2.getText());
Socket s=new Socket(text3.getText(),I1.intValue());
System.out.println("CLIENT> Socket client cree. Prêt à envoyer des messages\n");
this.button3.setText("< Socket crée >");
this.button1.setText("Envoyer");
// on cree l'objet out pour ecrire au travers du socket
out=new PrintWriter(s.getOutputStream());
}
catch(IOException ei)
{
System.out.println("\nAttention, erreur de socket\nVérifiez si le port n'est pas déjà utilisé\nVérifier le nom de la station hôte\n"+ ei+"\n");
}
}
if (cmd.equals("Quitter !"))
{
// Annulation
System.exit(0);
}
if(cmd.equals("Envoyer"))
{
out.println(TextArea1.getText());
System.out.println("CLIENT> Message envoyé au serveur\n");
// on libère la socket
out.flush();
//on réinitialise le champ du message
TextArea1.setText("");
}
if(cmd.equals("< Envoyer >"))
{
System.out.println("Il faut d'abord créer le socket avant d'envoyer un message\n");
}
if(cmd.equals("Ecouter"))
{
new Tache(TextArea2,text4);
}
}
// la fonction qui permet de changer de LookandFeel
public void updateLookAndFeel(String laf)
{
try
{
UIManager.setLookAndFeel(laf);
SwingUtilities.updateComponentTreeUI(this);
}
catch (Exception ex)
{
System.out.println("Failed loading L&F: " + laf);
System.out.println(ex);
}
}
private JTextField text2,text3,text4;
private JButton button3,button1,button2;
private JTextArea TextArea1,TextArea2;
private Tache t;
private PrintWriter out;
// Possible Look & Feels
private String mac = "com.sun.java.swing.plaf.mac.MacLookAndFeel";
private String metal = "javax.swing.plaf.metal.MetalLookAndFeel";
private String motif = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
private String windows = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
}
class Tache extends Thread
{
JTextArea TextArea;
JTextField text;
public Tache(JTextArea TextArea2,JTextField text4)
{
this.TextArea=TextArea2;
this.text=text4;
// on lance le thread
start();
}
public void run()
{
try
{
// on cree un thread pour le server car il est bloquant
Integer I2=new Integer(text.getText());
serv=new ServerSocket(I2.intValue());
System.out.println("SERVEUR> Socket serveur crée. En Attente de message\n");
sin=serv.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(sin.getInputStream()));
boolean done=false;
while(!done)
{ TextArea.append(in.readLine()+"\n");
System.out.println("SERVEUR> Message bien reçu\n");
}
}
catch(IOException ei)
{
System.out.println("erreur "+ ei+"\n");
}
}
private Socket sin;
private ServerSocket serv;
}
bonjour, s'il vous plait, est ce ke vous avez trouvé des difficultés pour me fournir le code, ke vous m'avez promis pour hier, voila j'ai trouvé un code qui marche bien, j'ai essayé de l'adapter a mon application mé j'ai pa réussit, vous pouvez inspirer de ce code, et merci.