Java 为什么不是';这根线不行吗?
我是一名初级Java程序员。我正在尝试构建一个可以直接在控制台上玩的太空入侵者游戏。稍后,我想通过JFrame添加一个图形界面;然而,目前,我仅限于创建一个不起作用的JFrame窗口。我将这些类保存在几个文件中—Constants.java、Entity.java、Player.java和Board.java、SpaceInvaders.java—我已经按照指定的顺序编译了这些文件。我的问题是,当我尝试运行main方法时,没有显示任何内容。没有窗户弹出。控制台中不显示任何输出。我怀疑问题出在类板上,可能是在gameInit()方法或run()方法中的线程构造上。我在我的课程教科书中找不到任何关于线程的信息——我从网站上获得了线程代码,我将在我的项目最终版本中引用它 如果你能给我一些建议,一定要告诉我。很抱歉,我对stackoverflow.com的格式不熟悉 我在下面附上了我的代码副本 Constants.javaJava 为什么不是';这根线不行吗?,java,multithreading,Java,Multithreading,我是一名初级Java程序员。我正在尝试构建一个可以直接在控制台上玩的太空入侵者游戏。稍后,我想通过JFrame添加一个图形界面;然而,目前,我仅限于创建一个不起作用的JFrame窗口。我将这些类保存在几个文件中—Constants.java、Entity.java、Player.java和Board.java、SpaceInvaders.java—我已经按照指定的顺序编译了这些文件。我的问题是,当我尝试运行main方法时,没有显示任何内容。没有窗户弹出。控制台中不显示任何输出。我怀疑问题出在类板
import java.io.*;
public interface Constants {
public static final int MOTION_WIDTH = 20;
public static final int MOTION_LENGTH = 20;
public static final int DELAY = 17;
}
Entity.java
import java.io.*;
public class Entity {
private int xPosition;
private int yPosition;
public void setXPosition(int newXPosition) {
this.xPosition = newXPosition;
}
public int getXPosition() {
return xPosition;
}
public void setYPosition(int newYPosition) {
this.yPosition = newYPosition;
}
public int getYPosition() {
return yPosition;
}
}
Player.java
import java.io.*;
import java.awt.event.KeyEvent;
public class Player extends Entity implements Constants{
private final int START_X_POSITION = 0;
private final int START_Y_POSITION = 0;
int x = 0;
public Player() {
setXPosition(START_X_POSITION);
setYPosition(START_Y_POSITION);
}
public void move() {
setXPosition((getXPosition()) + x);
if ((getXPosition()) <= 0) {
setXPosition(0);
}
if ((getXPosition()) >= MOTION_WIDTH) {
setXPosition(MOTION_WIDTH);
}
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
x = 1;
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
x = -1;
}
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
x = 0;
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
x = 0;
}
}
}
在类
SpaceInvaders
中,您提供的构造函数不是真正的构造函数。请删除退货类型void
。所以应该是这样的
public SpaceInvaders() {
add(new Board());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500, 500);
setVisible(true);
requestFocusInWindow();
}
public static void main(String[] args) {
new SpaceInvaders();
}
以下是Java文档中有关构造函数的信息:
类包含被调用以从类蓝图创建对象的构造函数。构造函数声明与方法声明类似,只是它们使用类的名称,并且没有返回类型。
()
应用修改后,JFrame会显示出来,控制台上也会打印很多0和a^。我看不到代码中的线程开始。我认为您必须按照下面的示例开始线程
class Board implements Runnable{
public void run(){
System.out.println("thread is running...");
}
public static void main(String args[]){
Board b1=new Board();
Thread t1 =new Thread(b1);
t1.start();
}
}
而且构造不应该具有返回类型
public void SpaceInvaders() {
}
改为
public SpaceInvaders() {
}
public void SpaceInvaders()
不是构造函数。试着从那一行中删除void
。我的错我没有看到。谢谢你,Stefan Freitag
public void SpaceInvaders() {
}
public SpaceInvaders() {
}