Ik probeer nu een KeyListener te implementen op een JPanel, maar dat wil maar niet lukken. Dit is de source die ik tot dusverre heb.
Snake.java
Field.java
Sorry dat ik zoveel source code plak, maar ik kan niet eens met zekerheid zeggen waar de fout zit.
Snake.java
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
| package impulse.snake; import javax.swing.JFrame; public class Snake extends JFrame { public static void main ( String [ ] arguments ) { new Snake ( ); } public Snake ( ) { getContentPane ( ).add ( new Field ( ) ); setDefaultCloseOperation ( EXIT_ON_CLOSE ); setLocation ( 150, 150 ); setSize ( 400, 400 ); setResizable ( false ); setTitle ( "Impulse" ); setVisible ( true ); } } |
Field.java
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
| package impulse.snake; import javax.swing.JPanel; import java.awt.Graphics; import java.awt.Color; import java.awt.event.KeyListener; import java.awt.event.KeyEvent; import java.lang.Runnable; import java.lang.Thread; import java.lang.InterruptedException; public class Field extends JPanel implements Runnable, KeyListener { private int snakeX = 10, snakeY = 10; private Thread thread = new Thread ( this ); public Field ( ) { thread.start ( ); addKeyListener ( this ); setLayout ( null ); } public void run ( ) { while ( true ) { repaint ( ); try { thread.sleep ( 100 ); } catch ( InterruptedException exception ) { } } } public void keyPressed ( KeyEvent keyEvent ) { snakeX += 10; snakeY += 10; } public void keyReleased ( KeyEvent keyEvent ) { } public void keyTyped ( KeyEvent keyEvent ) { } public void paint ( Graphics graphics ) { graphics.setColor ( Color.WHITE ); graphics.fillRect ( 0, 0, 400, 400 ); graphics.setColor ( Color.BLACK ); graphics.fillRect ( snakeX, snakeY, 10, 10 ); } } |
Sorry dat ik zoveel source code plak, maar ik kan niet eens met zekerheid zeggen waar de fout zit.