Initial chat room

This commit is contained in:
Guilherme Werner
2023-06-15 13:23:11 -03:00
parent 4c4d7ab949
commit 420f1fba5c
3 changed files with 203 additions and 19 deletions

View File

@ -0,0 +1,111 @@
package org.example;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ClientApp extends JFrame {
private static final String SERVER_IP = "localhost";
private static final int SERVER_PORT = 1234;
private JTextArea chatArea;
private JTextField messageField;
private JButton sendButton;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public ClientApp() {
setTitle("Chat Client");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setLayout(new BorderLayout());
chatArea = new JTextArea();
chatArea.setEditable(false);
add(new JScrollPane(chatArea), BorderLayout.CENTER);
JPanel bottomPanel = new JPanel();
bottomPanel.setLayout(new BorderLayout());
messageField = new JTextField();
bottomPanel.add(messageField, BorderLayout.CENTER);
sendButton = new JButton("Send");
sendButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
sendMessage();
}
});
bottomPanel.add(sendButton, BorderLayout.EAST);
add(bottomPanel, BorderLayout.SOUTH);
setVisible(true);
connectToServer();
startListening();
}
private void connectToServer() {
try {
socket = new Socket(SERVER_IP, SERVER_PORT);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
chatArea.append("Connected to server\n");
} catch (IOException e) {
e.printStackTrace();
}
}
private void startListening() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
String serverMessage;
while ((serverMessage = in.readLine()) != null) {
chatArea.append("Server: " + serverMessage + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
thread.start();
}
private void sendMessage() {
String message = messageField.getText().trim();
if (!message.isEmpty()) {
out.println(message);
messageField.setText("");
chatArea.append("You: " + message + "\n");
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new ClientApp();
}
});
}
}