渲染Java AWT画布以适应屏幕

渲染Java AWT画布以适应屏幕,java,canvas,resize,awt,aspect-ratio,Java,Canvas,Resize,Awt,Aspect Ratio,我目前正在使用Java的AWT库制作一个游戏 游戏以1080p渲染,在1080p屏幕上运行良好,但超过720p显示器的边缘,在4k显示器上留下大量空白。我想根据屏幕大小缩小或放大画布以适应屏幕 (编辑) 如果您在使用AWT游戏库时遇到问题,我建议您改用LWJGL/OpenGL,因为它是专门构建的,比AWT快得多,并且具有更高的功能。OpenGL的语法更复杂,但是,创建一个符合不太复杂需求的简单界面并不太困难。还应该注意的是,尽管LWJGL的安装可能很复杂,但它附带了大量的后台工作,比如内置的游戏

我目前正在使用Java的AWT库制作一个游戏 游戏以1080p渲染,在1080p屏幕上运行良好,但超过720p显示器的边缘,在4k显示器上留下大量空白。我想根据屏幕大小缩小或放大画布以适应屏幕

(编辑)
如果您在使用AWT游戏库时遇到问题,我建议您改用LWJGL/OpenGL,因为它是专门构建的,比AWT快得多,并且具有更高的功能。OpenGL的语法更复杂,但是,创建一个符合不太复杂需求的简单界面并不太困难。还应该注意的是,尽管LWJGL的安装可能很复杂,但它附带了大量的后台工作,比如内置的游戏速度和屏幕缩放功能。阻力最小的路径并不总是最佳路径。

答案是,您可以使用ToolKit.getScreenSize/getscreensolution全屏显示。然后,您要做的是为大小和分辨率添加在1080p屏幕上看起来很好的默认值,将ComponentListener添加到(J)帧或其内容窗格,并实现ComponentResistized。然后使用默认屏幕大小和默认分辨率的比率重新调整游戏中所有内容的大小

Dimension DEFAULT_SIZE = ...;
int DEFAULT_RESOLUTION = ...;
Dimension actualScreenSize = Toolkit.getToolkit().getScreenSize();
int actualResolution = Toolkit.getToolkit().getScreenResolution();
AffineTransform at = AffineTransform.getScaleInstance(...,...);
//Apply scaling to your Components and Shapes 

这对你来说是一项巨大的工作。