Professional Documents
Culture Documents
En
esta
ocasin
les
mostrare
una
pequea aplicacin en la cual se puede
implementar
un
cliente
Servidor
conSocket, OutputStream, DataOutputStre
am, adems, tambin podrn encontrar un
ejemplo de como utilizar unThread (hilo), y
una
clase
interna
que
implementa
un Runnable.
javax.swing.*;
java.awt.*;
java.awt.event.*;
java.io.DataInputStream;
java.io.DataOutputStream;
java.io.IOException;
java.io.InputStream;
java.io.OutputStream;
java.net.InetAddress;
java.net.ServerSocket;
java.net.Socket;
java.net.UnknownHostException;
java.util.logging.Level;
java.util.logging.Logger;
Thread t =
t.start();
new Thread(entrada);
}
@Override
public void actionPerformed(ActionEvent e){
if(e.getSource().equals(botonEnviar)){
if(textoChat.getText().equals(""))
metalera = false;
else
metalera = true;
if(metalera)
mensageSalida();
textoChat.setText("");
}
}
@Override
public Image getIconImage() {
Image iconoVentana = Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("icono.png"));
return iconoVentana;
}
public void titulo(){
labelTitulo = new JLabel();
labelTitulo.setIcon(imagen);add(labelTitulo,BorderLayout.NORTH);
panelContenedor.add(textoChat,BorderLayout.CENTER);
add(new JScrollPane(label), BorderLayout.CENTER);
panelBotones.setBackground(java.awt.Color.BLUE);
panelBotones.setLayout(new BorderLayout());
panelBotones.add(botonEnviar,BorderLayout.EAST);
panelContenedor.add(panelBotones,java.awt.BorderLayout.SOUTH);
botonEnviar.addActionListener(this);
add(panelContenedor,java.awt.BorderLayout.SOUTH);
label.setEditable(false);
label.setFont(new Font("Tahoma", 3, 12));
setIconImage(getIconImage());
textoChat.addKeyListener(new KeyAdapter(){
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER){
if(textoChat.getText().equals(""))
metalera = false;
else
metalera = true;
if(metalera)
mensageSalida();
textoChat.setText("");
}
}
});
}
@Override
public void keyTyped(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
@SuppressWarnings("RedundantStringConstructorCall")
String cadena = area;
label.setText(datos.readUTF());
area += label.getText() + "\n";
label.setText(area);
datos.close();
bufferEntrada.close();
canalComunicacion.close();
} catch (IOException ex) {
Logger.getLogger(Chat.class.getName())
.log(Level.SEVERE, null, ex);
}
}
}
}
}
}