-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBallFrame.java
113 lines (103 loc) · 2.73 KB
/
BallFrame.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
package baelle;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.text.SimpleDateFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
* Oberfläche für ein Ballspiel
* @author Doro
*
*/
public class BallFrame extends JFrame {
private static final long serialVersionUID = 1L;
private Ballspiel spiel;
/**
* erstellt eine Oberfläche mit 4 Buttons
*/
public BallFrame() {
setSize(400, 200);
setTitle("Tanzende Bälle");
spiel = new Ballspiel(this);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane = getContentPane();
uhrzeit = new JTextField();
timer(uhrzeit);
contentPane.add(uhrzeit, BorderLayout.NORTH);
canvas = new JPanel();
contentPane.add(canvas, BorderLayout.CENTER);
JPanel p = new JPanel();
addButton(p, "Ball starten", new ActionListener() {
public void actionPerformed(ActionEvent evt) {
spiel.ballStarten();
}
});
addButton(p, "Anhalten", new ActionListener() {
public void actionPerformed(ActionEvent evt) {
spiel.baelleStoppen();
}
});
addButton(p, "Weiter", new ActionListener() {
public void actionPerformed(ActionEvent evt) {
spiel.baelleWeiter();
}
});
addButton(p, "Leeren", new ActionListener() {
public void actionPerformed(ActionEvent evt) {
spiel.alleLoeschen();
}
});
contentPane.add(p, BorderLayout.SOUTH);
}
/**
* zeigt in einem Textfeld die Uhrzeit im Format HH:MM:SS an.
* @param textField textField in dem geschrieben werden soll.
*/
private void timer(JTextField textField) {
Runnable timer = () -> {
while (true) {
textField.setText(new SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
try {
Thread.sleep(500);
} catch (InterruptedException e) {
break;
}
}
};
Thread t = new Thread(timer);
t.start();
}
private void addButton(Container c, String title, ActionListener a) {
JButton b = new JButton(title);
c.add(b);
b.addActionListener(a);
}
/**
* liefert die Zeichenfläche von this
* @return Zeichenfläche
*/
public JPanel getZeichenflaeche()
{
return this.canvas;
}
private JPanel canvas;
private JTextField uhrzeit;
/**
* startet die Ballspiel-Oberfläche und macht sie sichtbar
* @param args wird nicht benutzt
*/
public static void main(String[] args) {
BallFrame frame = new BallFrame();
frame.setVisible(true);
}
}