Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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窗口大小调整_Java - Fatal编程技术网

Java窗口大小调整

Java窗口大小调整,java,Java,我正在编写一个2D游戏,我想知道当有人调整窗口大小时,它将调整所有内容以使其保持不变(与当前窗口大小相比)。例如,我有一个默认的“TILEWIDTH”,我怎么能使它,如果有人调整窗口的大小使其更大,它也会使“TILEWIDTH”更大?目前,在我的launcher类中(有Main方法),它只创建一个具有特定像素宽度和高度的新显示(如果调整窗口大小,它只会在游戏显示周围创建一个闪烁的黑色/灰色区域) 这是我的显示类(我在main方法的launcher类中创建了一个新的显示): }您需要的是一个侦听器

我正在编写一个2D游戏,我想知道当有人调整窗口大小时,它将调整所有内容以使其保持不变(与当前窗口大小相比)。例如,我有一个默认的“TILEWIDTH”,我怎么能使它,如果有人调整窗口的大小使其更大,它也会使“TILEWIDTH”更大?目前,在我的launcher类中(有Main方法),它只创建一个具有特定像素宽度和高度的新显示(如果调整窗口大小,它只会在游戏显示周围创建一个闪烁的黑色/灰色区域)

这是我的显示类(我在main方法的launcher类中创建了一个新的显示):


}

您需要的是一个侦听器来调整JFrame的大小。在另一个线程中解释了侦听器的添加:

触发侦听器后,您可以获取JFrame的新维度,并缩放“TILEWIDTH”变量,然后再次调用
paint(…)
方法

如果您提供更多的代码,我可以给出更精确的答案,但这是最正确的答案

更新

createDisplay()
方法中,初始化并设置
帧后,可以添加:

frame.addComponentListener(new ComponentAdapter() 
{  
    public void componentResized(ComponentEvent evt) {
        Component c = (Component)evt.getSource();
        //update your view/canvas
    }
});

我自己没有测试这个特定的组件,但这会给你带来很大的帮助

@Rosário Pereira Fernandes我用代码编辑了这篇文章
frame.addComponentListener(new ComponentAdapter() 
{  
    public void componentResized(ComponentEvent evt) {
        Component c = (Component)evt.getSource();
        //update your view/canvas
    }
});