嗨,我有一个错误,我找不到答案帮助。
package com.tutorial.main;
import java.awt.Canvas;
import java.awt.Frame;
import javax.swing.*;
import java.awt.Dimension;
public class Window extends Canvas {
private static final long serialVersionUID = -240840600533728354L;
public Window(int width, int height, String title) {
JFrame frame = new JFrame(title);
frame.setPreferredSize(new Dimension(width, height));
frame.setMinimumSize(new Dimension(width, height));
frame.setMaximumSize(new Dimension(width, height));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.add(Game);
frame.setVisible(true);
Game.start();
}
}
这是不起作用的我将包含底部工作的文件
它出现了“无法从第24行的类型Game”中对非静态方法start()进行静态引用。
该游戏无法解析为第22行的变量。
我已将所有文件都包含在内。请帮助。
package com.tutorial.main;
import java.awt.Canvas;
public class Game extends Canvas implements Runnable {
private static final long serialVersionUID = 7580815534084638412L;
public static final int WIDTH = 640, HEIGHT = WIDTH / 12 * 9;
public Game() {
new Window(WIDTH, HEIGHT, "Lets Build a Game!", this);
}
public synchronized void start() {
}
public void run() {
}
public static void main(String args[]) {
new Game();
}
}
第22行也是这个文件的错误 它出现错误“构造函数Window(int,int,String,Game)未定义”
有谁知道如何解决这个问题?
答案 0 :(得分:1)
您不能使用Game
类 - 您需要实例化该类的对象并使用它。
而不是:
frame.add(Game);
frame.setVisible(true);
Game.start();
执行:
Game game = new Game();
frame.add(game);
frame.setVisible(true);
game.start();
至于另一个问题,类Window
没有可以应用于调用的构造函数:
new Window(WIDTH, HEIGHT, "Lets Build a Game!", this);
只有一个构造函数接受:
Window(int width, int height, String title)
因此,如果您将更改对Window的构造函数的调用并删除this
作为最后一个参数:
new Window(WIDTH, HEIGHT, "Lets Build a Game!);
我相信你应该做得很好。