-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClient1.java
More file actions
131 lines (116 loc) · 4.2 KB
/
Client1.java
File metadata and controls
131 lines (116 loc) · 4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package Socket;
import java.awt.EventQueue;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.JOptionPane;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Client1 {
private JFrame frmClient;
private JTextField textField;
private static JTextArea textArea;
private PrintWriter out;
private BufferedReader in;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
try {
Client1 window = new Client1();
window.frmClient.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
});
}
/**
* Create the application.
*/
public Client1() {
connectToServer();
initialize();
}
/**
* Connect to the server.
*/
private void connectToServer() {
try {
Socket socket = new Socket("localhost", 12345);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
// Prompt for username
String username = JOptionPane.showInputDialog("Enter your username:");
if (username == null || username.trim().isEmpty()) {
JOptionPane.showMessageDialog(null, "Username cannot be empty. Exiting.");
System.exit(0);
}
out.println(username); // Send username to server
// Create a thread to listen for messages from the server
new Thread(() -> {
try {
String serverMessage;
while ((serverMessage = in.readLine()) != null) {
appendMessage(serverMessage);
}
} catch (IOException e) {
appendMessage("Connection to server lost.");
}
}).start();
} catch (IOException e) {
appendMessage("Unable to connect to the server.");
}
}
/*
append a message to the text area.
*/
private static void appendMessage(String message) {
SwingUtilities.invokeLater(() -> textArea.append(message + "\n"));
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmClient = new JFrame();
frmClient.setTitle("Client1");
frmClient.getContentPane().setBackground(Color.BLACK);
frmClient.getContentPane().setLayout(null);
textField = new JTextField();
textField.setForeground(Color.WHITE);
textField.setBackground(Color.DARK_GRAY);
textField.setBounds(10, 607, 370, 28);
frmClient.getContentPane().add(textField);
textField.setColumns(10);
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
String message = textField.getText().trim();
if (!message.isEmpty()) {
out.println(message); // Send message to the server
appendMessage("You: " + message); // Append own message to chat area
textField.setText(""); // Clear input field
}
}
}
});
textArea = new JTextArea();
textArea.setForeground(Color.WHITE);
textArea.setBackground(new Color(0, 0, 0));
textArea.setEditable(false);
textArea.setBounds(10, 10, 370, 580);
frmClient.getContentPane().add(textArea);
frmClient.setBounds(100, 100, 400, 680);
frmClient.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}