gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:09 25 4
gpt4 key购买 nike

我试图弄清楚如何更改在主类中从键监听器类创建的对象的字段。我创建了一个名为 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");
}
}

最佳答案

KeyMaster类中创建一个Player字段,并通过构造函数将当前玩家注入(inject)到该字段中:

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

然后在main方法中您可以创建KeyMaster,如下所示:

KeyMaster KeyEvnt = new KeyMaster(Ship);

关于java - 从 KeyListener 访问在另一个类中创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35072177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com