1 java animation swing compiler-errors keylistener
我试图让使用一个简单的动画ActionListener,并KeyListener
会采取在键盘输入,即箭头键.问题是程序没有编译KeyListener.有人可以说明为什么并可能提供解决方案的帮助.谢谢!
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Planegame extends JPanel implements ActionListener, KeyListener
{ //^^ this line is giving me trouble^^^^
Timer tim = new Timer(20, this);
int x = 0, y = 0, velX = 0, velY = 0;
public Planegame()
{
tim.start(); //this will start my animation
addKeyListener(this); // will activate the keylistner to watch key press
setFocusable(true);
setFocusTraversalKeysEnabled(false); //disables shift and tab key
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.GREEN);
g.fillOval(x, y, 10, 10);
}
public void actionPerformed(ActionEvent e)
{
x = x + 10; //velX
y = y + velY;
repaint();
}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==38)
{
velY = 1;
}
if(e.getKeyCode()==40)
{
velY = -1;
}
if (e.getKeyCode()==32) //booster power
{
velX = 3;
}
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(keyEvent e) {}
public static void main(String[] args)
{
PlaneGame zed = new PlaneGame();
JFrame k = new JFrame();
k.setTitle("game");
k.setSize(600,400);
k.setVisible(true);
k.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
k.add(zed);
}
}
Run Code Online (Sandbox Code Playgroud)
你在keyReleased方法宣言中有一个错字......
public void keyReleased(keyEvent e) {
Run Code Online (Sandbox Code Playgroud)
请记住,Java区分大小写,应该是......
public void keyReleased(KeyEvent e) {
Run Code Online (Sandbox Code Playgroud)
注意大写K的KeyEvent
您希望考虑@Override在您认为自己重写的方法上使用注释,这会在您犯了某种错误时提醒您,例如
@Override
public void keyReleased(KeyEvent e) {
Run Code Online (Sandbox Code Playgroud)
但也没有理由paintComponent应该是public,你永远不希望有一个人你的组件之外叫它
与往常一样,我建议使用键绑定,KeyListener因为它们可以更好地控制组件需要能够触发键事件的焦点水平
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |