Java KeyListener第一次使用时没有响应?
我看了这些链接,没有一个对我有帮助。我正在使用KeyListener和Runnalbe制作一个JFrame游戏。我在过去的比赛中从来没有遇到过这样的问题,但现在我要说的是:Java KeyListener第一次使用时没有响应?,java,swing,jframe,keylistener,runnable,Java,Swing,Jframe,Keylistener,Runnable,我看了这些链接,没有一个对我有帮助。我正在使用KeyListener和Runnalbe制作一个JFrame游戏。我在过去的比赛中从来没有遇到过这样的问题,但现在我要说的是: 我启动程序,窗口出现,消息显示一切正常 没有钥匙可以用 -我关上窗户 -第二次打开时,一切正常。 -如果我重置虚拟机并重试,请返回第1步 这是我的构造函数: public Game() { super("ZMan"); addKeyListener(this); setSize(800,600);
- 我启动程序,窗口出现,消息显示一切正常李>
- 没有钥匙可以用 -我关上窗户 -第二次打开时,一切正常。 -如果我重置虚拟机并重试,请返回第1步
public Game()
{
super("ZMan");
addKeyListener(this);
setSize(800,600);
setVisible(true);
i = createImage(800,600);
b = i.getGraphics();
makeLevel();
souls = new Image[3];
particles = new double[20][3];
pc = 10;
pH = 20;
player = new Image[8];
nme = new Image[8];
showMessage = false;
try
{
bg = ImageIO.read(new File("bg.png"));
abg = ImageIO.read(new File("abg.png"));
bil = ImageIO.read(new File("buildingP.png"));
bilP = ImageIO.read(new File("building.png"));
message = ImageIO.read(new File("./system/messageBG.png"));
souls[2] = ImageIO.read(new File("sR.png"));
souls[1] = ImageIO.read(new File("sG.png"));
souls[0] = ImageIO.read(new File("sB.png"));
rem = souls[0];
//player
player[0] = ImageIO.read(new File("./player/normal.png"));
player[1] = ImageIO.read(new File("./player/pBloop.png"));
player[2] = ImageIO.read(new File("./player/pscorp.png"));
player[3] = ImageIO.read(new File("./player/pSqui.png"));
player[4] = ImageIO.read(new File("./player/pCato.png"));
player[5] = ImageIO.read(new File("./player/pChubs.png"));
player[6] = ImageIO.read(new File("./player/pPluckers.png"));
player[7] = ImageIO.read(new File("./player/pSpooky.png"));
gate = ImageIO.read(new File("./gate.png"));
levelUp = ImageIO.read(new File("./system/levelUp.png"));
xL = ImageIO.read(new File("./player/x.png"));
/*
nme[0] = ImageIO.read(new File("./enemies/bloop.png"));
nme[1] = ImageIO.read(new File("./enemies/bloop.png"));
nme[2] = ImageIO.read(new File("./enemies/scorp.png"));
nme[3] = ImageIO.read(new File("./enemies/squi.png"));
nme[4] = ImageIO.read(new File("./enemies/cato.png"));
*/
nme[0] = Toolkit.getDefaultToolkit().createImage("./enemies/bloob.png");
nme[1] = Toolkit.getDefaultToolkit().createImage("./enemies/bloob.png");
nme[2] = Toolkit.getDefaultToolkit().createImage("./enemies/scorp.png");
nme[3] = Toolkit.getDefaultToolkit().createImage("./enemies/squi.png");
nme[4] = Toolkit.getDefaultToolkit().createImage("./enemies/cato.png");
nme[5] = Toolkit.getDefaultToolkit().createImage("./enemies/chubs.png");
nme[6] = Toolkit.getDefaultToolkit().createImage("./enemies/pluckers.png");
nme[7] = Toolkit.getDefaultToolkit().createImage("./enemies/spooky.png");
}
catch(Exception e){e.printStackTrace();}
powerT = new String[8];
powerT[0] = "You went back to normal";
powerT[1] = "You are now Bloop!";
powerT[2] = "You are now Scorp!";
powerT[3] = "You are now Squi!";
powerT[4] = "You are now Cato!";
powerT[5] = "You are now Chubs!";
powerT[6] = "You are now Pluckers";
powerT[7] = "You are now Spooky";
startAim();
//music = new Music("./system/music/0.wav");
t.start();
}
nyone知道这个问题吗?这听起来可能很愚蠢,但更像是一次理智的检查。检查你的主要方法。我建议进行一个调试步骤,确保第一次启动窗口时,实际调用了游戏的构造函数……对我来说,构造函数似乎没有什么不好的地方,这让我觉得对象的实例化可能被忽略了
如果不是那样,我帮不了你;你必须等待对你问题的具体细节更聪明的人来回答:)这听起来可能很愚蠢,但更像是一种理智的检查。检查你的主要方法。我建议进行一个调试步骤,确保第一次启动窗口时,实际调用了游戏的构造函数……对我来说,构造函数似乎没有什么不好的地方,这让我觉得对象的实例化可能被忽略了 如果不是那样,我帮不了你;您必须等待更了解问题细节的人回答:)“要触发键盘事件,组件必须具有键盘焦点。”-。我猜相关组件第二次有了焦点。你可以试试,或者最好看看 附录:这里有一个键绑定示例。要触发键盘事件,组件必须具有键盘焦点。我猜相关组件第二次有了焦点。你可以试试,或者最好看看
附录:这里有一个键绑定示例。之所以调用它,是因为如果没有,那么屏幕上就不会出现任何图像。之所以调用它,是因为如果没有,那么屏幕上就不会出现任何图像。这是很多代码。尝试发布一个。@Jeffrey我不同意73行代码是“很多代码”,但是+1表示发布一个SSCCE的想法。在准备SSCCE时对Erik说:1)要么热链接到网络上的图像,要么在代码中生成它们。2) 将所有数组(
souls
,player
,nme
,powerT
等)减少为只包含2个元素。是的,但我只是将它们包括在内,以便查看它们是否可能会改变任何东西(可能不会)。奇怪的是,我发现我必须等待一分钟,直到它起作用。但这仍然不应该发生。在整个游戏中,只有570行代码的时间是一个模糊的量!这是很多代码。尝试发布一个。@Jeffrey我不同意73行代码是“很多代码”,但是+1表示发布一个SSCCE的想法。在准备SSCCE时对Erik说:1)要么热链接到网络上的图像,要么在代码中生成它们。2) 将所有数组(souls
,player
,nme
,powerT
等)减少为只包含2个元素。是的,但我只是将它们包括在内,以便查看它们是否可能会改变任何东西(可能不会)。奇怪的是,我发现我必须等待一分钟,直到它起作用。但这仍然不应该发生。在整个游戏中,只有570行代码的时间是一个模糊的量!键绑定没有帮助。我试过了。重点不是问题。我在上面添加了关于如何使用requestFocusInWindow();查找“确保某个特定组件在第一次激活窗口时获得焦点”。是的,我就是这样得到它的。就在它前面的setVisible(true)调用requestFocusInWindow()
的boolean
结果是什么;密钥绑定没有帮助。我试过了。重点不是问题。我在上面添加了关于如何使用requestFocusInWindow();查找“确保某个特定组件在第一次激活窗口时获得焦点”。是的,我就是这样得到它的。就在它前面的setVisible(true)调用requestFocusInWindow()
的boolean
结果是什么;如果你能给我个建议,那会很有帮助的。