从KeyListener访问在另一个类中创建的对象

时间:2016-01-28 21:15:24

标签: java keylistener keyevent

我试图找出如何从keylistener类更改在我的主类中创建的对象的字段。我创建了一个名为KeyMaster的类,它所做的就是通过在主类中创建的事件队列来监听键盘输入。我希望能够在向上,向左,向下,向右推动时通过KeyMaster类更改x和y坐标。问题是我无法从KeyListener类获取Ship对象。请帮忙。 :)

public class TheMage extends JFrame 
{
    public static void main(String[] args) 
    {               
        TheMage Main = new TheMage();
        Player Ship = new Player(50,50);

        KeyMaster KeyEvnt = new KeyMaster();        

        EventQueue.invokeLater
        (new Runnable() 
            {

                @Override
                public void run() 
                {
                Main.addKeyListener(KeyEvnt);
                Main.setFocusable(true);
                Main.setVisible(true);
                }
            }
        );      
    }
}


public class Player {
    int x;
    int y;

    public Player(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

public class KeyMaster implements KeyListener {

    public KeyMaster() {

    }    

    @Override
    public void keyTyped(KeyEvent ke) {
        System.out.println("Hello - Type");        
    }

    @Override
    public void keyPressed(KeyEvent ke) {
        System.out.println("Hello - Press");        
    }

    @Override
    public void keyReleased(KeyEvent ke) {
        System.out.println("Hello - Rel");        
    }
}

2 个答案:

答案 0 :(得分:0)

您可以使船舶静止。

GET http://mydomain/get-code.php

另外,请遵循Java命名约定。

答案 1 :(得分:0)

Player类中创建一个KeyMaster字段,并通过构造函数将当前播放器注入字段:

private Player player;
KeyMaster(Player player) {
    this.player = player;
}

然后在main方法中,您可以按如下方式创建KeyMaster

KeyMaster KeyEvnt = new KeyMaster(Ship);