Necesitamos urgentemente un código de ventana de chat simple implementado en programación Java
importar java.awt.*;
importar java.awt.event.*;
importar javax.swing.*;
importar java.net.*;
importar java.io.*;
clase pública ClientDemo01 {
public static void main(String[] args) {
JFrame f=nuevo JFrame("AA");
JPanel p1=nuevo JPanel();
JPanel p2=nuevo JPanel();
JTextArea ta=new JTextArea(15,30);
ta.setEditable(false); //El campo de texto es de solo lectura
JScrollPane sp= new JScrollPane( ta); //Panel de desplazamiento
JTextField tf=new JTextField(20);
JButton b=new JButton("Enviar");
p1 .add(sp);
p2.add(tf);
p2.add(b);
f.add(p1," Centro" );
f.add(p2,"Sur");
f.setBounds(300,300,360,300);
f.setVisible(true);
p>f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Socket socket=null;
BufferedInputStream bis= null;
BufferedOutputStream bos=null;
prueba{
socket=new Socket("192.168.0.4",5000); p>
bis=new BufferedInputStream(socket.getInputStream());
bos=new BufferedOutputStream(socket.getOutputStream());
MyThread01 mt=new MyThread01(bis ,ta);
mt.start();
}catch(Excepción e){
e.printStackTrace();
}
p>b.addActionListener(new ButtonActionListener01(tf,ta,bos));
}
}
clase ButtonActionListener01 implementa ActionListener{ p>
JTextField tf;
JTextArea ta;
BufferedOutputStream bos;
public ButtonActi
onListener01(JTextField tf,JTextArea ta,BufferedOutputStream bos){
this.tf=tf;
this.ta=ta;
this.bos=bos ;
}
public void actionPerformed(ActionEvent e){
String message=tf.getText();
if(! message.equals("")){
tf.setText(""); //Borrar el cuadro de texto
ta.append("AA:"+message+"\n " ); //Agregar al campo de texto y ajustar
try{
bos.write(message.getBytes());
bos.flush() ;
}catch(Excepción ex){
System.out.println("Error de envío");
}
}
}
}
clase MyThread01 extiende Thread{
BufferedInputStream bis;
JTextArea ta; p >
public MyThread01(BufferedInputStream bis,JTextArea ta){
this.bis=bis;
this.ta=ta;
}< / p>
public void run(){
intentar{
while(true){
byte[] b=nuevo byte[100]
int length=bis.read(b);
String mensaje=new String(b,0,length);
ta.append(" BB :"+mensaje+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
} importar java.awt.*;
importar java.awt.event.*;
importar javax.swing.*;
importar java.net.*;
importar java.io.*;
clase pública ServerDemo01{
public static void main(String[] args){
JFrame f=new JFrame("BB");
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JTextArea ta=new JTextArea(12,30); //Dominio de texto, el primer parámetro es el número de filas, el segundo parámetro es el número de columnas
ta.setEditable(false); //El campo de texto es de solo lectura
JScrollPane sp=new JScrollPane(
ta); //Panel de desplazamiento
JTextField tf=new JTextField(20);
JButton b=new JButton("Enviar");
p1 . agregar(sp);
p2.add(tf);
p2.add(b);
f.add(p1,"Centro" ) ;
f.add(p2,"Sur");
f.setBounds(300,300,360,300);
f.setVisible(true);
p>f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ServerSocket server=null;
Socket = null;
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
prueba{
server=new ServerSocket(5000)
//ta.append("Esperando conexión AA...\n");
socket=server.accept();
/ /ta .append("AA está conectado\n");
bis=new BufferedInputStream(socket.getInputStream());
bos=new BufferedOutputStream(socket.getOutputStream()
MyThread1 mt=new MyThread1(bis,ta);
mt.start();
}catch(Exception e){
e.printStackTrace();
}
b.addActionListener(new ButtonActionListener1(tf,ta,bos));
} p>
}
clase ButtonActionListener1 implementa ActionListener{
JTextField tf;
JTextArea ta;
BufferedOutputStream bos; p>
public ButtonActionListener1(JTextField tf,JTextArea ta,BufferedOutputStream bos){
this.tf=tf;
this.ta=ta;
this .bos=bos;
}
public void actionPerformed(ActionEvent e){
String message=tf.getText(); //Obtener el contenido del cuadro de texto
if(!message.equals("")){
tf.setText(""); //Borrar el cuadro de texto
ta. append("BB:"+message+"\n"); //Agregar al campo de texto y ajustar la línea
try{
> bos.write(message.getBytes());
bos.flush();
}catch(Excepción ex){
System.out. println("¡Error en el envío!");
}
}
}
}
clase MyThread1 extiende Thread{
BufferedInputStream bis;
JTextArea ta;
public MyThread1(BufferedInputStream bis,JTextArea ta){
this.bis =bis;
this.ta=ta;
}
public void run(){
intentar{
while(true){
byte[] b=nuevo byte[100];
int length=bis.read(b);
Mensaje de cadena=nueva cadena(b,0,longitud);
ta.append("AA:"+mensaje+"\n");
}
}catch(Excepción e){
e.printStackTrace();
}
}
}