-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
91 lines (74 loc) · 3.21 KB
/
Copy pathMain.java
File metadata and controls
91 lines (74 loc) · 3.21 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
import javax.swing.*;
import java.awt.*;
import java.io.ObjectOutputStream;
import java.net.Socket;
public class Main {
// Shared variable for delay (in milliseconds)
private static volatile int delay = 100; // Default start delay (in ms)
public static void main(String[] args) {
// ====== Matrix Theme UI for Slider ======
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Request Delay Controller");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 150);
frame.setLayout(new BorderLayout());
// Matrix colors
Color matrixGreen = new Color(0, 255, 70);
Color matrixBlack = Color.BLACK;
// Label
JLabel label = new JLabel("Request Delay: " + delay + " ms", SwingConstants.CENTER);
label.setForeground(matrixGreen);
label.setFont(new Font("Consolas", Font.BOLD, 18));
label.setBackground(matrixBlack);
label.setOpaque(true);
// Slider with new range: 1 ms to 500 ms
JSlider slider = new JSlider(1, 500, delay); // min=1ms, max=500ms
slider.setMajorTickSpacing(100);
slider.setMinorTickSpacing(10);
slider.setPaintTicks(true);
slider.setBackground(matrixBlack);
slider.setForeground(matrixGreen);
slider.addChangeListener(e -> {
delay = slider.getValue();
label.setText("Request Delay: " + delay + " ms");
});
// Custom labels for the slider
slider.setPaintLabels(true);
java.util.Hashtable<Integer, JLabel> labelTable = new java.util.Hashtable<>();
labelTable.put(1, new JLabel("1"));
labelTable.put(100, new JLabel("100"));
labelTable.put(200, new JLabel("200"));
labelTable.put(300, new JLabel("300"));
labelTable.put(400, new JLabel("400"));
labelTable.put(500, new JLabel("500"));
for (JLabel lbl : labelTable.values()) {
lbl.setForeground(matrixGreen);
}
slider.setLabelTable(labelTable);
frame.add(label, BorderLayout.NORTH);
frame.add(slider, BorderLayout.CENTER);
frame.getContentPane().setBackground(matrixBlack);
frame.setVisible(true);
});
// ====== Thread 1: Sending requests ======
Thread senderThread = new Thread(() -> {
String host = "localhost";
int port = 8081;
while (true) {
try (Socket socket = new Socket(host, port);
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream())) {
UserRequest request = new UserRequest();
out.writeObject(request);
} catch (Exception e) {
System.out.println("Error sending object: " + e.getMessage());
}
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
senderThread.start();
}
}