Toon posts:

[Java] KeyListener

Pagina: 1
Acties:

Verwijderd

Topicstarter
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
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.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22-08 01:56
Oh, het wil niet lukken! Dan zit de fout in regel 23. Als het niet zou gaan zou 'ie in 44 gezeten hebben, als 'ie niet wilde werken in 12 en als je had verteld dat 'ie het niet deed, zou 'ie in 55 gezeten hebben.

Gelukkig heb je een hele duidelijke probleemomschrijving gegeven, zodat ik je heel nauwkeurig kon uitleggen waar de fout zit.

Tip: nuttige informatie.

[ Voor 17% gewijzigd door Soultaker op 05-05-2003 02:37 ]