This repository has been archived by the owner on Aug 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
autogui.java
335 lines (314 loc) · 15.5 KB
/
autogui.java
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
package auto;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.util.Hashtable;
public class autogui implements Observer {
private JTabbedPane tabbedPane1;
private JPanel panel1;
private JButton stwórzSamochódButton;
private JTextField textField1;
private JTextField textField2;
private JTextField textField3;
private JTextField textField4;
private JTextField textField5;
private JTextField textField6;
private JTextField textField7;
private JTextField textField8;
private JTextField textField9;
private JTextField textField10;
private JTextField textField11;
private JTextField textField12;
private JTextField textField13;
private JButton OBROTYButton;
private JButton OBROTYButton1;
private JButton WCIŚNIJButton;
private JButton ODPUŚĆButton;
private JTextField textField14;
private JTextField textField15;
private JTextField textField16;
private JTextField textField17;
private JSlider slider1;
private JTextField textField18;
private JTextField textField19;
private JTextField textField20;
private JTextField textField21;
private JTextField textField22;
private JTextField textField23;
private JTextField textField24;
private JTextField textField25;
private JTextField textField26;
private JTextField textField27;
private JTextField textField28;
private JTextField textField29;
private JTextField textField30;
private JTextField textField31;
private JButton WYLACZButton;
private JButton ODPALButton;
private JTextField textField32;
private Samochod samochod;
private Hashtable table;
private Thread thread; // wątek z obrotami
public autogui() {
GhostText duch = new GhostText(textField13,"nie więcej niż 210");
stwórzSamochódButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// tworzę obiekt samochód przy naciśnięciu przycisku
samochod = new Samochod(textField2.getText(), Float.parseFloat(textField3.getText()), Float.parseFloat(textField4.getText())
, Integer.parseInt(textField5.getText()), textField6.getText(), Float.parseFloat(textField7.getText()), Float.parseFloat(textField8.getText()),
textField1.getText(), Float.parseFloat(textField21.getText()), Float.parseFloat(textField22.getText()), Integer.parseInt(textField23.getText()),
textField9.getText(), textField10.getText(), textField11.getText(), textField12.getText(),
Float.parseFloat(textField13.getText()));
// komunikat o powodzeniu
JOptionPane.showMessageDialog(null,
"STWORZONO SAMOCHÓD",
"SUCCESS",
JOptionPane.INFORMATION_MESSAGE);
// dodaje obserwatora
samochod.silnik.addObserver(autogui.this::update);
//System.out.println(samochod.silnik.getObservers());
// uaktualniam wszystkie stałe wartości w zakładce "stan samochodu"
textField16.setText(textField23.getText()); // max obroty
textField16.setEditable(false);
textField18.setText(textField5.getText()); // ilość biegów
textField18.setEditable(false);
textField14.setText(textField9.getText()); // kolor auta
textField14.setEditable(false);
textField24.setText(textField10.getText()); // nr rejestracyjny auta
textField24.setEditable(false);
textField25.setText(textField11.getText()); // marka auta
textField25.setEditable(false);
textField26.setText(textField12.getText()); // model auta
textField26.setEditable(false);
textField28.setText(textField13.getText()); // max prędkość auta
textField28.setEditable(false);
textField27.setText(String.valueOf(samochod.obliczWage())); // waga samochodu
textField27.setEditable(false);
table.put(samochod.skrzynia.getIloscBiegow(),new JLabel("MAX"));
slider1.setLabelTable(table);
slider1.revalidate(); // odświeżenie slidera
// ustawiam a później uaktualniam zmienne wartości w zakładce "stan samochodu"
Timer update = new Timer(2000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) { // przy każdej zmianie biegów ma liczyć przełożenie
textField17.setText(String.valueOf(samochod.silnik.getObroty()));
textField17.setEditable(false);
textField20.setText(String.valueOf(samochod.skrzynia.getAktualnyBieg()));
textField20.setEditable(false);
textField19.setText(String.valueOf(samochod.skrzynia.getAktualnePrzelozenie()));
textField19.setEditable(false);
if(samochod.skrzynia.sprzeglo.isStanSprzegla()) {
textField15.setText("wciśnięte");
textField15.setEditable(false);
}
else {
textField15.setText("nie wciśnięte");
textField15.setEditable(false);
}
}
});
Timer update_quick = new Timer(100, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField29.setText(String.valueOf(samochod.aktualnaPredkosc()));
textField29.setEditable(false);
}
});
update.start();
update_quick.start();
}
});
// włączam silnik
ODPALButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String msg = samochod.wlacz();
if (msg.equals("Silnik już włączony")) {
JOptionPane.showMessageDialog(null,
"SILNIK JEST już WŁĄCZONY",
"WARNING",
JOptionPane.PLAIN_MESSAGE);
}
else {
thread = new Thread(samochod.silnik);
samochod.silnik.setBlinker(true);
thread.start();} // uruchamiam wątek
}
});
//wyłączam silnik
WYLACZButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String msg = samochod.wylacz();
if (msg.equals("Silnik już wyłączony")) {
JOptionPane.showMessageDialog(null,
"SILNIK JEST już WYŁĄCZONY",
"WARNING",
JOptionPane.PLAIN_MESSAGE);
}
else {
try {
samochod.silnik.setBlinker(false); // wyłączam dodatkowy wątek
Thread.sleep(1000); // czekam tu, żeby w metodzie run() zresetowały się obroty2 na 0
textField32.setText(String.valueOf(samochod.silnik.getObroty2())); // ustawiam rzeczywiste obroty na 0 po zakończeniu wątku
textField32.setEditable(false);
slider1.setValue(0); // ustawiam bieg na 0 "luz"
thread = null; // zeruję pole
System.out.println("wątek zabity");
}catch (InterruptedException a ){}
}
}
});
// zwiększam obroty
OBROTYButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (samochod.silnik.getObroty() < 100) {
// okienko komunikatu -> silnik nie jest włączony
JOptionPane.showMessageDialog(null,
"SILNIK NIE JEST WŁĄCZONY",
"WARNING",
JOptionPane.PLAIN_MESSAGE);
} else if (samochod.silnik.getObroty() + Float.parseFloat(textField30.getText()) > samochod.silnik.getMax_obroty()) {
// komunikat, obroty nie mogą przekroczyć max obrotów
JOptionPane.showMessageDialog(null,
"OBROTY NIE MOGĄ PRZEKROCZYc MAX OBROTÓW",
"WARNING",
JOptionPane.PLAIN_MESSAGE);
} else { //wszystko normalnie, silnik włączony
samochod.silnik.zwieksz_obroty(Float.parseFloat(textField30.getText()));
textField30.setText(""); // czyszczę okienko z tekstu po zwiększeniu obrotów
//System.out.println("obroty: "+samochod.silnik.getObroty());
}
}
});
// zmniejszam obroty
OBROTYButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (samochod.silnik.getObroty() <= 100) {
// nie można nic zrobić, bo wyłączony samochód
JOptionPane.showMessageDialog(null,
"SILNIK NIE JEST WŁĄCZONY",
"WARNING",
JOptionPane.PLAIN_MESSAGE);
} else if (samochod.silnik.getObroty() - Float.parseFloat(textField31.getText()) < 100) {
JOptionPane.showMessageDialog(null,
"OBROTY NIE MOGĄ PRZEKROCZYC MIN OBROTÓW (100)",
"WARNING",
JOptionPane.PLAIN_MESSAGE);
} else { // wszystko okej, zmniejsz obroty
samochod.silnik.zmniejsz_obroty(Float.parseFloat(textField31.getText()));
textField31.setText(""); // czyszczę okienko z tekstu po zmniejszeniu obrotów
}
}
});
// tworze slider
slider1.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
try { // jeśli zmieniam na nieistaniejący bieg
if (slider1.getValue() > samochod.skrzynia.getIloscBiegow()) {
JOptionPane.showMessageDialog(null,
"Nie ma takiego biegu",
"WARNING",
JOptionPane.WARNING_MESSAGE);
slider1.setValue(samochod.skrzynia.getIloscBiegow()); // wracam kursorem na MAX bieg
}
// resetowanie slidera
else if(samochod.silnik.getObroty()==0 && slider1.getValue()==0 || !samochod.skrzynia.sprzeglo.isStanSprzegla() && slider1.getValue()==0){
; // pass, gdy wyłączony i wracam na 0 albo gdy sprzęgło niewciśnięte i wracam na 0
}
else if (samochod.silnik.getObroty() >=100){ // normalnie zmieniam bieg i liczę przełożenie
samochod.skrzynia.zmienBieg(((JSlider) e.getSource()).getValue());
samochod.skrzynia.obliczPrzelozenie();
}
else if (samochod.silnik.getObroty()==0){ // kiedy auto nie jest uruchomione
JOptionPane.showMessageDialog(null,
"włącz AUTO !!!!",
"WARNING",
JOptionPane.WARNING_MESSAGE);
slider1.setValue(0); // resetuję do początkowego położenia
}
}
catch (Sprzeglo_exception i) { // kiedy nie jest wciśnięte sprzęgło
i.oCoKaman(); // wypisuję błąd
JOptionPane.showMessageDialog(null,
"WCIŚNIJ SPRZĘGŁO!!!",
"WARNING",
JOptionPane.WARNING_MESSAGE);
slider1.setValue(0); // resetuję do początkowego położenia
}
}
});
// wciskam sprzęgło
WCIŚNIJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!samochod.skrzynia.sprzeglo.isStanSprzegla()) {
samochod.skrzynia.sprzeglo.zalacz();
}
else {
JOptionPane.showMessageDialog(null,
"SPRZĘGŁO JEST JUŻ WCIŚNIĘTE",
"WARNING",
JOptionPane.WARNING_MESSAGE);
}
}
});
// odpuszczam sprzęgło
ODPUŚĆButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (samochod.skrzynia.sprzeglo.isStanSprzegla()) {
samochod.skrzynia.sprzeglo.rozlacz();
}
else {
JOptionPane.showMessageDialog(null,
"SPRZĘGŁO JUŻ NIE JEST WCISNIĘTE!!!",
"WARNING",
JOptionPane.WARNING_MESSAGE);
}
}
});
}
// observer
public void update() {
textField32.setText(String.valueOf(samochod.silnik.getObroty2())); //uaktualniam fluktujące obroty
}
public static void main(String[] args) { // tworzę ramkę interfejsu
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch (UnsupportedLookAndFeelException e){
System.out.println("fuckup 1");
}catch (ClassNotFoundException e){
System.out.println("fuckup2");
}catch (InstantiationException e){
System.out.println("fakup3");
}catch (IllegalAccessException e){
System.out.println("fakup4");
}
JFrame frame = new JFrame("autogui");
frame.setContentPane(new autogui().tabbedPane1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
private void createUIComponents() {
// TODO: place custom component creation code here
DefaultBoundedRangeModel model = new DefaultBoundedRangeModel(0, 0, 0, 10);
slider1 = new JSlider(model);
slider1.setOrientation(JSlider.HORIZONTAL);
slider1.setValue(0); // wartość startowa
slider1.setMinorTickSpacing(1); // linie co 1 bieg
slider1.setPaintTicks(true); // pokazuj linie odstępów co 1 bieg
table = new Hashtable();
table.put(0,new JLabel("MIN"));
}
}