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