构造函数 (int, int, string) 未定义;在 LWJGL 中创建显示

the constructor (int, int, string) is undefined; creating display in LWJGL

不确定这是否太具体,或者示例代码太多,但我真的不知道我做错了什么。我正在尝试在 this tutorial 之后在 LWJGL 中进行基本显示 window。第 17 行:

window = new DisplayManager(WIDTH, HEIGHT, "game");

我收到错误消息:构造函数 DisplayManager(int, int, String) 未定义。我对错误是什么有一个大概的了解,但我不知道为什么会这样。我是 Java 的新手,所以不完全了解发生了什么,但我仔细查看了视频中的两个文件,除了文件名不同外,没有发现任何差异我创建的文件和包与他的相比。

这是MainGame.java:

package gameEngine;

import renderEngine.DisplayManager;

public class MainGame implements Runnable {
    public Thread game;
    public static DisplayManager window;
    public static final int WIDTH = 1280, HEIGHT = 760;

    public void start() {
        game = new Thread(this, "game");
        game.start();
    }

    public static void init() {
        System.out.println("Initialising Game...");
        window = new DisplayManager(WIDTH, HEIGHT, "game");
        window.create();
    }

    public void run() {
        init();
        while (true) {
            update();
            render();
        }
    }

    private void update() {
        System.out.println("Updating Game...");
    }

    private void render() {
        System.out.println("Rendering Game...");
    }

    public static void main(String[] args) {
         new MainGame().start();

    }

}

这是DisplayManager.java:

package renderEngine;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWVidMode;


public class DisplayManager {
    private int width, height;
    private String title;
    private long window;

    public void Window(int width, int height, String Game) {
        this.width = width;
        this.height = height;
        this.title = title;
    }
    public void create() {
        if (!GLFW.glfwInit()) {
            System.err.println("ERROR: GLFW wasn't initialised!");
            return;
        }
        window = GLFW.glfwCreateWindow(width, height, title, 0, 0);
        if (window == 0) {
            System.err.println("ERROR: Window wasn't created!");
        }
        GLFWVidMode videoMode = GLFW.glfwGetVideoMode(GLFW.glfwGetPrimaryMonitor());
        GLFW.glfwSetWindowPos(window, videoMode.width() - width / 2, videoMode.height() - height / 2);
        GLFW.glfwShowWindow(window);
    }
}

抱歉所有未使用的垃圾代码。据我所知,其中很多是为进一步的教程而设置的。如果有人可以帮助我,那将不胜感激。 干杯!

您的 DisplayManager 没有定义构造函数。因此它只有一个不接受任何参数的默认构造函数。

要解决此问题,您可以替换 Window 方法或简单地添加一个构造函数。

public DisplayManager(int width, int height, String Game) { 
    this.width = width; 
    this.height = height; 
    this.title = title; 
}

您似乎决定停止学习教程并将 Window class 重命名为 DisplayManager。出于某种原因,您还决定 Window 的构造函数应该具有 void return 类型。

您只需将 Window 方法重命名为 DisplayManager 并删除 return 类型使其成为构造函数。

还有,第三个参数应该叫title,而不是Game(感谢@Ivar)

public DisplayManager(int width, int height, String title) { 
    this.width = width; 
    this.height = height; 
    this.title = title; 
}