O CHAT EM JAVA MVC
Por: Mariana Souza • 12/6/2022 • Trabalho acadêmico • 2.177 Palavras (9 Páginas) • 115 Visualizações
Projeto
Neste projeto foi criado um programa que realiza comunicação interna entre dois computadores conectados em uma rede.
O programa foi desenvolvido na linguagem Java ,sendo necessário a instalação da Máquina Virtual Java (JVM), para uso do chat.
- Ao iniciar o chat, primeiro é apresentado uma janela solicitando o nome do usuário.
[pic 1]
2. Após digitar o nome e questionado seu o usuário será o Servidor ou Cliente .
[pic 2]
Caso seja feito a escolha por Cliente é aberto uma nova janela questionando o IP do Servidor, que terá que ser previamente informado.
[pic 3]
Para o usuário que será o servidor logo após a segunda janela abrira a janela principal do chat, e para o cliente esta janela abrira após digitar o IP
[pic 4]
Se a conexão for estabelecida corretamente cada usuário recebera uma mensagem de confirmação
[pic 5]
Com a conexão estabelecida é possível começar a conversa.
[pic 6]
Relatório com as linhas de código
Classe Controle
package MVC;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JOptionPane;
public class Controle {
private final Visao view;
private final Modelo model;
static Socket Sockconn;
ServerSocket ServSoc;
public Controle(Visao view, Modelo model) throws IOException {
this.view = view;
this.model = model;
view.enviaListener(new Envia());
escolha();
}
void escolha() throws IOException {
model.setNome(JOptionPane.showInputDialog(null, "digite seu nome"));//indica nome da pessoa
Object[] opcoes = {"Servidor", "Cliente"};//cria objeto de opçoes para escolher entre servidor e cliente
//janela com as opcoes
int opcao = JOptionPane.showOptionDialog(null, "Olá " + model.getNome()
+ "\nVoce deseja ser Servidor ou Cliente?", "Escolha",
JOptionPane.DEFAULT_OPTION, JOptionPane.DEFAULT_OPTION, null, opcoes, opcoes[0]);
if (opcao == 0) {//chama metodo para conexao como servidor ou cliente
model.ipServ.getLocalHost();
view.getjTAHistorico().setText("Bem vindo "+model.getNome());
view.setTitle("servidor");//inidica titulo da janela de acordo com escolha
model.servidor();//inicia conexao como servidor
} else if (opcao == 1) {
model.ipCli = JOptionPane.showInputDialog(null,"digite o Ip do Servidor\n por exemplo", "192.168.1.0");
view.getjTAHistorico().setText("Bem vindo "+model.getNome());
view.setTitle("Cliente");
model.cliente();//inicia conexao como cliente
}
}
class Envia implements ActionListener {// ação do Botão
@Override
public void actionPerformed(ActionEvent e) {
//verifica se existe texto no TextField
if ((e.getSource() == view.getjBEnviar()) && (view.getjTFNovaMens().getText() != "")) {
//envia o texto para o TextArea para ficar salco como Historico
view.getjTAHistorico().setText(view.getjTAHistorico().getText()
+ "\n Eu:" + view.getjTFNovaMens().getText());
model.enviar(model.getNome() + ": " + view.getjTFNovaMens().getText());
//limpa TextField
view.getjTFNovaMens().setText("");
}
}
}
public static void main(String[] args) throws IOException {
Visao v = new Visao();
Modelo m = new Modelo(v);
Controle p = new Controle(v, m);
}
}
Classe Visão
package MVC;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Visao extends JFrame {
private JPanel JPGeral;
private JPanel jPOutros;
private JTextField jTFNovaMens;
private JTextArea jTAHistorico;
private JButton jBEnviar;
public Visao() {
setTitle("Char Super uau"); // seta titulo a janela
iniciaComponentes();//metodo que inicia componentes
setVisible(true);//deixa Jframe visivel
setContentPane(JPGeral);//indica que este e o painel principal
pack();// indica tamnho do jframe de acorod com componentes
setResizable(false);//impede de mudar tamnho da janela
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//habilita fechamento pelo x
}
public void iniciaComponentes() {
...