gpt4 book ai didi

Java启动线程问题

转载 作者:行者123 更新时间:2023-11-30 06:23:49 24 4
gpt4 key购买 nike

这只是我的代码的一部分,如果你们需要完整的代码,请告诉我。所以我的问题是,这部分 if(shoot) thread.start(); 实际上没有不能像我希望的那样工作。使用 KeyListener boolean 变量 shoot 在按下空格键后变为真。如果我只使用 thread.start() 一切正常,但我不想在程序启动时启动线程,但在按下空格键之后(在变量 shoot 变为真之后)。感谢您的建议!

public void paintComponent(Graphics g){
super.paintComponent(g);

i=new ImageIcon("C:\\Users\\Jakub\\Desktop\\pm.gif");
pacman=i.getImage();

g.drawImage(pacman,x,y,this);

if(shoot){
g.drawOval(newX+20,y+10,10,10);
}

if(repaint)
repaint();
}

public static void main(String args[]){
Buffer z= new Buffer();
z.setBackground(Color.cyan);

frame=new JFrame();
frame.setSize(500,500);
frame.add(z);
frame.addKeyListener(z);
frame.setVisible(true);

thread=new Thread(){
public void run(){
try{
for (int i=0;i<=20;i++){
newX=newX+i;
repaint=true;
Thread.sleep(100);
}
}catch(InterruptedException v){System.out.println(v);}
}
};
if(shoot)
thread.start();
}
if(e.getKeyCode()==KeyEvent.VK_SPACE){
shoot=true;
}

最佳答案

    if(shoot)
thread.start();
=> }

启动应用程序后,它创建一个新的 JFrame,设置其大小等,创建一个 Thread 实例,检查 shoot 是否为真,因此为假不启动线程。之后,它会在上面提供的时间点等待 JFrame 关闭。当您单击 shoot 时,您的应用程序仍在等待,因此它永远不会检查 shoot 是真还是假。

您可以做的是将上面的代码移到您的关键监听方法中。不要忘记将 shoot 也移动到适当的位置。

关于Java启动线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17762548/

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