Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LWJGL Display.setWidth/Height?_Java_Lwjgl - Fatal编程技术网

Java LWJGL Display.setWidth/Height?

Java LWJGL Display.setWidth/Height?,java,lwjgl,Java,Lwjgl,与Java的Canvas类类似,我目前正在尝试编写一个方法来设置LWJGL显示的最大大小。我遇到的唯一问题是LWJGL的Display类没有setWidth或setHeight方法,我想不出一种自己编写的方法。我的第一个想法是以某种方式获得窗口正在使用的JFrame实例,但是也没有方法,所以我觉得我就是SOL。我还尝试过使用DisplayMode并通过它重置大小,但每次调整大小时它都会关闭窗口并重新打开。我正在尝试编写一个方法,它可以简单地调整窗口的大小,就像用户拖动它来放大它一样。有人知道我怎

与Java的Canvas类类似,我目前正在尝试编写一个方法来设置LWJGL显示的最大大小。我遇到的唯一问题是LWJGL的Display类没有setWidth或setHeight方法,我想不出一种自己编写的方法。我的第一个想法是以某种方式获得窗口正在使用的JFrame实例,但是也没有方法,所以我觉得我就是SOL。我还尝试过使用DisplayMode并通过它重置大小,但每次调整大小时它都会关闭窗口并重新打开。我正在尝试编写一个方法,它可以简单地调整窗口的大小,就像用户拖动它来放大它一样。有人知道我怎样才能/应该这样做吗?考虑到手动拖动/调整其大小后,直到您放开屏幕,屏幕才会更新,是否有可能获得我想要的平滑最大尺寸效果?

如果您需要对窗口进行更多控制,您可以尝试使用
AWT帧作为LWJGL
画布的父级。这将允许您的代码利用默认窗口方法,包括Java标准库中的
setWidth()
setHeight()
,防止和控制窗口行为,并添加侦听器来运行特定事件的代码

首先,
导入java.awt.*
然后设置如下代码:

创建
框架
画布

Frame frame = new Frame("LWJGL Game Window");
frame.setLayout(new BorderLayout());
Canvas canvas = new Canvas();
try {
    Display.setParent(canvas);

    frame.setPreferredSize(new Dimension(1024, 786));
    frame.setMinimumSize(new Dimension(800, 600));
    frame.pack();
    frame.setVisible(true);

    Display.create();

    while(!Display.isCloseRequested() && !closeRequested)
    {
        // main code or call to code goes here

        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
        Display.update();
    }

    Display.destroy();
    frame.dispose();
    System.exit(0);

} catch (LWJGLException e) {
    e.printStackTrace();
}
画布
添加到
框架

frame.add(canvas, BorderLayout.CENTER);
设置LWJGL并将其应用于
画布

Frame frame = new Frame("LWJGL Game Window");
frame.setLayout(new BorderLayout());
Canvas canvas = new Canvas();
try {
    Display.setParent(canvas);

    frame.setPreferredSize(new Dimension(1024, 786));
    frame.setMinimumSize(new Dimension(800, 600));
    frame.pack();
    frame.setVisible(true);

    Display.create();

    while(!Display.isCloseRequested() && !closeRequested)
    {
        // main code or call to code goes here

        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
        Display.update();
    }

    Display.destroy();
    frame.dispose();
    System.exit(0);

} catch (LWJGLException e) {
    e.printStackTrace();
}
不知道您对Java了解多少,但是从这里,您可以添加一个
ActionListerner
ComponentListerner
,如果调整窗口的大小,它会起作用

还可以查看LWJGL wiki以了解更多信息。这至少有助于为你指明正确的方向