java - 尝试启动我的线程

标签 java eclipse multithreading swing keylistener

首先,我知道我尝试读取输入的方式非常糟糕,但我尝试使用 Keylistener,但无论我如何尝试,它都不起作用。我不知道我做错了什么,所以这就是我现在正在尝试的。我试图从 PreControls.java 调用 Controller.java 中的线程。如果您可以帮助我实现一个有效的按键监听器,我将非常感激,但我认为解决这个线程问题也可以。我尝试过调试它,但线程似乎没有启动。

PreControls.java 中的代码:

Controller C = new Controller();
C.start();
System.out.print("Thread Should be started ");

Controller.java中的代码:

package Game;

public class Controller extends Thread {
    public void MyShipController(){
        System.out.print("Thread Is started ");
        String CharIn = "";
        while(SpaceInvaders.GameOn = true){
            CharIn = PreControls.ReadKeyPressed.getText();
            if(CharIn.equalsIgnoreCase("a")){
                SpaceInvaders.MyPos[0]--;
                System.out.print("Move Left ");
            }else if(CharIn.equalsIgnoreCase("d")){
                SpaceInvaders.MyPos[0]++;
                System.out.print("Move Right");
            }else if(CharIn.equalsIgnoreCase(" ")){
                //Fire Bullet   
            }
        PreControls.ReadKeyPressed.setText("");
        SpaceInvaders.MyShip.setLocation(SpaceInvaders.MyPos[0], SpaceInvaders.MyPos[1]);
        jp1.repaint();
        }
    }
}

很抱歉没有提供 SSCCEE。我需要发送我的整个项目,这就失去了做项目的意义。

ReadKeyPressed 是我要输入字母的 JTextArea。 jp1 是 JFrame

我正在 Eclipse IDE 中工作。

编辑:忘记添加:启动小程序后,控制台仅显示“线程应该启动”,因此这是我如何创建线程或如何创建线程的问题。

编辑2:我的最终目标是检测何时按下a(或向左箭头),并将MyShip(JLabel)向左移动1个位置,如果d(或向右箭头)则将其向右移动1个位置被按下。

好吧,我已经接受了威廉姆斯的回答,因为它使我的线程得以运行。正如所建议的,我将研究按键绑定(bind)以检测何时按下按键。感谢您的所有帮助。

最佳答案

这个=是一个Assinment运算符。

while(SpaceInvaders.GameOn = true)

我想你想要这个==

while(SpaceInvaders.GameOn == true)

或者更好,更干净,只是

while(SpaceInvaders.GameOn)
<小时/>

此外,您应该使用键绑定(bind)而不是 KeyListener,这会给您带来焦点问题。请参阅this answer有关使用键绑定(bind)的示例。另请参阅the tutorial

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

相关文章:

java - 获取 Struts 2 中的列表映射

java - 在 java swing 中组件移动完成后想要记录一次组件位置

java - 根据列表中对象的属性创建列表

java - Eclipse 选项卡仅在项目内关闭

java - 以编程方式控制 TPTP 分析

c++ - 加载主 QT/QML GUI 窗口会减慢启动画面的渲染速度

java - Spring启动数据r2dbc自动创建表

eclipsec.exe 选项/命令行用法?

在单独的线程中调用时,C# 2.0 函数不起作用

java - 为什么多线程会变慢