A maior rede de estudos do Brasil

Grátis
166 pág.
Apostila Java - Orientação a Objetos

Pré-visualização | Página 26 de 26

}
9
10 public void envia(String mensagem) {
11 this.saida.println(mensagem);
12 }
13 }
9. No projeto K19-chat-client crie uma classe para definir a tela em Java Swing do chat.
1 import java.awt.event.ActionEvent;
2 import java.awt.event.ActionListener;
3
4 import javax.swing.JButton;
5 import javax.swing.JFrame;
6 import javax.swing.JLabel;
7 import javax.swing.JPanel;
8 import javax.swing.JScrollPane;
9 import javax.swing.JTextArea;
10 import javax.swing.JTextField;
11
12 public class TelaK19Chat {
13
14 private final JFrame frame;
15 private final JPanel panel;
16 private final JScrollPane scrollPane;
17 private final JTextArea textArea1;
18 private final JLabel label1;
19 private final JTextField textField;
20 private final JButton button;
21
22 private final EmissorDeMensagem emissorDeMensagem;
23
24 public TelaK19Chat(EmissorDeMensagem emissor) {
25 this.emissorDeMensagem = emissor;
26
27 this.frame = new JFrame("K19 - Chat");
28 this.panel = new JPanel();
29 this.textArea1 = new JTextArea(10, 60);
30 this.textArea1.setEditable(false);
31 this.scrollPane = new JScrollPane(this.textArea1);
32 this.label1 = new JLabel("Digite uma mensagem...");
33 this.textField = new JTextField(60);
155 K19 Treinamentos
Apêndice - Chat K19
34 this.button = new JButton("Enviar");
35
36 this.frame.setContentPane(this.panel);
37 this.panel.add(this.scrollPane);
38 this.panel.add(this.label1);
39 this.panel.add(this.textField);
40 this.panel.add(button);
41
42 class EnviaMensagemListener implements ActionListener {
43
44 public void actionPerformed(ActionEvent e) {
45 emissorDeMensagem.envia(textField.getText());
46 textField.setText("");
47 }
48 }
49
50 this.button.addActionListener(new EnviaMensagemListener());
51
52 this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
53 this.frame.setSize(700, 300);
54 this.frame.setVisible(true);
55
56 }
57
58 public void adicionaMensagem(String mensagem) {
59 this.textArea1.append(mensagem + "\n");
60
61 }
62 }
10. No projeto K19-chat-client crie uma classe para definir o receptor de mensagens.
1 import java.util.Scanner;
2
3 public class ReceptorDeMensagem implements Runnable {
4 private Scanner entrada;
5
6 private TelaK19Chat telaK19Chat;
7
8 public ReceptorDeMensagem(Scanner entrada, TelaK19Chat telaK19Chat) {
9 this.entrada = entrada;
10 this.telaK19Chat = telaK19Chat;
11 }
12
13 public void run() {
14 while (this.entrada.hasNextLine()) {
15 String mensagem = this.entrada.nextLine();
16 this.telaK19Chat.adicionaMensagem(mensagem);
17 }
18 }
19 }
11. No projeto K19-chat-client crie uma classe para inicializar o cliente.
1 import java.io.PrintStream;
2 import java.net.Socket;
3 import java.util.Scanner;
4
5 public class Client {
6 public static void main(String[] args) throws Exception {
7
8 Socket socket = new Socket("IP DO SERVIDOR", 10000);
9
10 PrintStream saida = new PrintStream(socket.getOutputStream());
11
12 Scanner entrada = new Scanner(socket.getInputStream());
13
www.k19.com.br 156
Apêndice - Chat K19
14 EmissorDeMensagem emissor = new EmissorDeMensagem(saida);
15
16 TelaK19Chat telaK19Chat = new TelaK19Chat(emissor);
17
18 ReceptorDeMensagem receptor = new ReceptorDeMensagem(entrada,
19 telaK19Chat);
20 Thread pilha = new Thread(receptor);
21 pilha.start();
22 }
23 }
157 K19 Treinamentos

Crie agora seu perfil grátis para visualizar sem restrições.