Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package br.com.uol.xpg.wyalves.chat2;
- import java.awt.Color;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.OutputStreamWriter;
- import java.io.Writer;
- import java.net.Socket;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.swing.BorderFactory;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.JScrollPane;
- import javax.swing.JTextArea;
- import javax.swing.JTextField;
- @SuppressWarnings("serial")
- public class Client extends JFrame implements ActionListener, KeyListener {
- private JTextArea text;
- private JTextField txtMsg;
- private JButton btnSend;
- private JButton btnExit;
- private JLabel lblHistoric;
- private JLabel lblMsg;
- private JPanel pnlContent;
- private Socket socket;
- private OutputStream out;
- private Writer outw;
- private BufferedWriter bfw;
- private JTextField txtIP;
- private JTextField txtPort;
- private JTextField txtName;
- public Client() {
- JLabel lblCheck = new JLabel("Verificar!");
- txtIP = new JTextField("127.0.0.1");
- txtPort = new JTextField("12345");
- txtName = new JTextField("Cliente");
- Object[] texts = { lblCheck, txtIP, txtPort, txtName };
- JOptionPane.showMessageDialog(null, texts);
- pnlContent = new JPanel();
- text = new JTextArea(10, 20);
- text.setEditable(false);
- text.setBackground(new Color(240, 240, 240));
- txtMsg = new JTextField(20);
- lblHistoric = new JLabel("Histórico");
- lblMsg = new JLabel("Mensagem");
- btnSend = new JButton("Enviar");
- btnSend.setToolTipText("Enviar Mensagem");
- btnExit = new JButton("Sair");
- btnSend.setToolTipText("Sair do Chat");
- btnSend.addActionListener(this);
- btnExit.addActionListener(this);
- btnSend.addKeyListener(this);
- btnExit.addKeyListener(this);
- JScrollPane scroll = new JScrollPane(text);
- text.setLineWrap(true);
- pnlContent.add(lblHistoric);
- pnlContent.add(scroll);
- pnlContent.add(lblMsg);
- pnlContent.add(txtMsg);
- pnlContent.add(btnExit);
- pnlContent.add(btnSend);
- pnlContent.setBackground(Color.LIGHT_GRAY);
- text.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.BLUE));
- txtMsg.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.BLUE));
- setTitle(txtName.getText());
- setContentPane(pnlContent);
- setLocationRelativeTo(null);
- setResizable(false);
- setSize(250, 300);
- setVisible(true);
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- }
- public void connect() {
- try {
- socket = new Socket(txtIP.getText(), Integer.parseInt(txtPort.getText()));
- out = socket.getOutputStream();
- outw = new OutputStreamWriter(out);
- bfw = new BufferedWriter(outw);
- bfw.write(txtName.getText() + "\r\n");
- bfw.flush();
- } catch (Exception e) {
- Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
- }
- }
- public void sendMessage(String msg) {
- try {
- if (msg.equals("Sair!")) {
- bfw.write("Desconectado \r\n");
- text.append("Desconectado \r\n");
- } else {
- bfw.write(msg + "\r\n");
- text.append(txtName.getText() + " diz -> " + txtMsg.getText() + "\r\n");
- }
- bfw.flush();
- txtMsg.setText("");
- txtMsg.getCursor();
- } catch (IOException e) {
- Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
- }
- }
- public void listen() {
- try {
- InputStream in = socket.getInputStream();
- InputStreamReader inr = new InputStreamReader(in);
- BufferedReader bfr = new BufferedReader(inr);
- String msg = "";
- while (!"Sair!".equalsIgnoreCase(msg)) {
- if (bfr.ready()) {
- msg = bfr.readLine();
- if (msg.equals("Sair")) {
- text.append("O servidor caiu!\r\n");
- } else {
- text.append(msg + "\r\n");
- }
- }
- }
- } catch (IOException e) {
- Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
- }
- }
- public void exit() {
- try {
- sendMessage("Sair");
- bfw.close();
- outw.close();
- out.close();
- socket.close();
- } catch (IOException e) {
- Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
- }
- }
- @Override
- public void actionPerformed(ActionEvent evt) {
- try {
- if (evt.getActionCommand().equals(btnSend.getActionCommand())) {
- sendMessage(txtMsg.getText());
- } else if (evt.getActionCommand().equals(btnExit.getActionCommand())) {
- exit();
- }
- } catch (Exception e) {
- Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
- }
- }
- @Override
- public void keyPressed(KeyEvent evt) {
- if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
- try {
- sendMessage(txtMsg.getText());
- } catch (Exception e) {
- Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
- }
- }
- }
- @Override
- public void keyReleased(KeyEvent arg0) {
- }
- @Override
- public void keyTyped(KeyEvent arg0) {
- }
- public static void main(String[] args) {
- Client chat = new Client();
- chat.connect();
- chat.listen();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement