Advertisement
Wesley_Alves

Classe Cliente

Dec 9th, 2016
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.25 KB | None | 0 0
  1. package br.com.uol.xpg.wyalves.chat2;
  2.  
  3. import java.awt.Color;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.awt.event.KeyEvent;
  7. import java.awt.event.KeyListener;
  8. import java.io.BufferedReader;
  9. import java.io.BufferedWriter;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. import java.io.InputStreamReader;
  13. import java.io.OutputStream;
  14. import java.io.OutputStreamWriter;
  15. import java.io.Writer;
  16. import java.net.Socket;
  17. import java.util.logging.Level;
  18. import java.util.logging.Logger;
  19. import javax.swing.BorderFactory;
  20. import javax.swing.JButton;
  21. import javax.swing.JFrame;
  22. import javax.swing.JLabel;
  23. import javax.swing.JOptionPane;
  24. import javax.swing.JPanel;
  25. import javax.swing.JScrollPane;
  26. import javax.swing.JTextArea;
  27. import javax.swing.JTextField;
  28.  
  29. @SuppressWarnings("serial")
  30. public class Client extends JFrame implements ActionListener, KeyListener {
  31.  
  32.     private JTextArea text;
  33.     private JTextField txtMsg;
  34.     private JButton btnSend;
  35.     private JButton btnExit;
  36.     private JLabel lblHistoric;
  37.     private JLabel lblMsg;
  38.     private JPanel pnlContent;
  39.     private Socket socket;
  40.     private OutputStream out;
  41.     private Writer outw;
  42.     private BufferedWriter bfw;
  43.     private JTextField txtIP;
  44.     private JTextField txtPort;
  45.     private JTextField txtName;
  46.  
  47.     public Client() {
  48.         JLabel lblCheck = new JLabel("Verificar!");
  49.         txtIP = new JTextField("127.0.0.1");
  50.         txtPort = new JTextField("12345");
  51.         txtName = new JTextField("Cliente");
  52.         Object[] texts = { lblCheck, txtIP, txtPort, txtName };
  53.         JOptionPane.showMessageDialog(null, texts);
  54.  
  55.         pnlContent = new JPanel();
  56.         text = new JTextArea(10, 20);
  57.         text.setEditable(false);
  58.         text.setBackground(new Color(240, 240, 240));
  59.         txtMsg = new JTextField(20);
  60.         lblHistoric = new JLabel("Histórico");
  61.         lblMsg = new JLabel("Mensagem");
  62.         btnSend = new JButton("Enviar");
  63.         btnSend.setToolTipText("Enviar Mensagem");
  64.         btnExit = new JButton("Sair");
  65.         btnSend.setToolTipText("Sair do Chat");
  66.  
  67.         btnSend.addActionListener(this);
  68.         btnExit.addActionListener(this);
  69.         btnSend.addKeyListener(this);
  70.         btnExit.addKeyListener(this);
  71.  
  72.         JScrollPane scroll = new JScrollPane(text);
  73.         text.setLineWrap(true);
  74.  
  75.         pnlContent.add(lblHistoric);
  76.         pnlContent.add(scroll);
  77.         pnlContent.add(lblMsg);
  78.         pnlContent.add(txtMsg);
  79.         pnlContent.add(btnExit);
  80.         pnlContent.add(btnSend);
  81.         pnlContent.setBackground(Color.LIGHT_GRAY);
  82.  
  83.         text.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.BLUE));
  84.         txtMsg.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.BLUE));
  85.         setTitle(txtName.getText());
  86.         setContentPane(pnlContent);
  87.         setLocationRelativeTo(null);
  88.         setResizable(false);
  89.         setSize(250, 300);
  90.         setVisible(true);
  91.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  92.     }
  93.  
  94.     public void connect() {
  95.         try {
  96.             socket = new Socket(txtIP.getText(), Integer.parseInt(txtPort.getText()));
  97.             out = socket.getOutputStream();
  98.             outw = new OutputStreamWriter(out);
  99.             bfw = new BufferedWriter(outw);
  100.             bfw.write(txtName.getText() + "\r\n");
  101.             bfw.flush();
  102.         } catch (Exception e) {
  103.             Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
  104.         }
  105.     }
  106.  
  107.     public void sendMessage(String msg) {
  108.         try {
  109.             if (msg.equals("Sair!")) {
  110.                 bfw.write("Desconectado \r\n");
  111.                 text.append("Desconectado \r\n");
  112.             } else {
  113.                 bfw.write(msg + "\r\n");
  114.                 text.append(txtName.getText() + " diz -> " + txtMsg.getText() + "\r\n");
  115.             }
  116.             bfw.flush();
  117.             txtMsg.setText("");
  118.             txtMsg.getCursor();
  119.  
  120.         } catch (IOException e) {
  121.             Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
  122.         }
  123.     }
  124.  
  125.     public void listen() {
  126.         try {
  127.             InputStream in = socket.getInputStream();
  128.             InputStreamReader inr = new InputStreamReader(in);
  129.             BufferedReader bfr = new BufferedReader(inr);
  130.             String msg = "";
  131.  
  132.             while (!"Sair!".equalsIgnoreCase(msg)) {
  133.                 if (bfr.ready()) {
  134.                     msg = bfr.readLine();
  135.                     if (msg.equals("Sair")) {
  136.                         text.append("O servidor caiu!\r\n");
  137.                     } else {
  138.                         text.append(msg + "\r\n");
  139.                     }
  140.                 }
  141.             }
  142.         } catch (IOException e) {
  143.             Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
  144.         }
  145.     }
  146.  
  147.     public void exit() {
  148.         try {
  149.             sendMessage("Sair");
  150.             bfw.close();
  151.             outw.close();
  152.             out.close();
  153.             socket.close();
  154.         } catch (IOException e) {
  155.             Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
  156.         }
  157.     }
  158.  
  159.     @Override
  160.     public void actionPerformed(ActionEvent evt) {
  161.         try {
  162.             if (evt.getActionCommand().equals(btnSend.getActionCommand())) {
  163.                 sendMessage(txtMsg.getText());
  164.             } else if (evt.getActionCommand().equals(btnExit.getActionCommand())) {
  165.                 exit();
  166.             }
  167.         } catch (Exception e) {
  168.             Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
  169.         }
  170.     }
  171.  
  172.     @Override
  173.     public void keyPressed(KeyEvent evt) {
  174.         if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
  175.             try {
  176.                 sendMessage(txtMsg.getText());
  177.             } catch (Exception e) {
  178.                 Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e);
  179.             }
  180.         }
  181.     }
  182.  
  183.     @Override
  184.     public void keyReleased(KeyEvent arg0) {
  185.     }
  186.  
  187.     @Override
  188.     public void keyTyped(KeyEvent arg0) {
  189.     }
  190.  
  191.     public static void main(String[] args) {
  192.  
  193.         Client chat = new Client();
  194.         chat.connect();
  195.         chat.listen();
  196.     }
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement