-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMovingClient.java
More file actions
118 lines (102 loc) · 3.08 KB
/
MovingClient.java
File metadata and controls
118 lines (102 loc) · 3.08 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
/*
* Copyright 2018 ADVA Optical Networking SE. All rights reserved.
*
* Owner: tomaszd
*
* $Id: $
*/
import javafx.scene.control.Button;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.HashSet;
import java.util.Set;
public class MovingClient extends KeyAdapter {
PrintWriter out;
Socket echoSocket;
BufferedReader stdIn;
Set<Integer> pressedKeys = new HashSet<>();
public MovingClient() throws IOException {
// try (
echoSocket = new Socket("localhost", 9000);
out = new PrintWriter(echoSocket.getOutputStream(), true);
// BufferedReader in =
// new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
stdIn =
new BufferedReader(new InputStreamReader(System.in));
// ) {
// String userInput;
// while ((((userInput = stdIn.readLine())) != null) &&
// !userInput.equals("")) {
// out.println(userInput);
// System.out.println(in.readLine());
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
}
@Override
public void keyTyped(KeyEvent e) {
// System.out.println("You typed a key "+ e.getKeyChar());
// out.println(e.getKeyChar());
}
@Override
public void keyPressed(KeyEvent e) {
// System.out.println("You pressed a key "+ e.getKeyChar());
// out.println(e.getKeyChar());
updatePressedKeys(true, e);
sendMove();
}
@Override
public void keyReleased(KeyEvent e) {
// System.out.println("You released a key "+ e.getKeyChar());
// out.println("-" + e.getKeyChar());
updatePressedKeys(false, e);
sendMove();
}
void updatePressedKeys(boolean isAdd, KeyEvent key){
if(isAdd){
pressedKeys.add(key.getKeyCode());
} else {
pressedKeys.remove(key.getKeyCode());
}
for(Integer integer: pressedKeys) {
System.out.println(integer);
}
}
void sendMove(){
KeyboardRPiMover keyboardRPiMover = KeyboardRPiMover.getInstance();
Move move = keyboardRPiMover.pressedKeys.get(pressedKeys);
if(move != null) {
out.println(move.getMove());
System.out.println("You sent move "+ move.getMove());
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel mainPanel = new JPanel();
JTextField textField = new JTextField("Press arrow keys or QWEADZXC keys to move robot");
textField.setEditable(false);
JButton button = new JButton("Click Me and Move");
mainPanel.add(textField);
mainPanel.add(button);
frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
frame.setSize(400, 400);
button.grabFocus();
frame.setVisible(true);
try {
MovingClient mc = new MovingClient();
button.addKeyListener(mc);
} catch (IOException e){
e.printStackTrace();
}
}
}