基于JFrame大小的java缩放画布内容
基本上,我正在用Java构建一个小游戏,我希望画布组件的内容能够根据windows的大小进行缩放,这是一个JFrame。我想这样做的原因是因为我在全屏运行游戏,显然不是所有的屏幕都有相同的尺寸
这是Window类,Game参数是主要的画布组件,我想根据JFrame大小进行缩放:
public class Window{
public Window(int width, int height, String title, Game game) {
JFrame jf = new JFrame(title);
//Setting the window size
jf.setSize(width, height);
//Fullscreen window
jf.setExtendedState(JFrame.MAXIMIZED_BOTH);
jf.setUndecorated(true);
jf.setLocationRelativeTo(null);
jf.setResizable(false);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setPreferredSize(new Dimension(Game.WIDTH, Game.HEIGHT));
game.setMaximumSize(new Dimension(Game.WIDTH, Game.HEIGHT));
game.setMinimumSize(new Dimension(Game.WIDTH, Game.HEIGHT));
jf.add(game);
jf.setVisible(true);
game.start();
}
}
这就是我获取屏幕尺寸的方法,然后我将这些变量添加到Window类的构造函数中:
private static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
public static final int WIDTH = (int) screenSize.getWidth(), HEIGHT = (int) screenSize.getHeight();
有人能帮忙吗
另外,如果格式化很糟糕,请在stackoverflow上首次发布
# 1 楼答案
您可以在面板中添加
ComponentListener
。当框架可见时,将生成componentResized
事件。然后进行图像缩放计算阅读Swing教程中关于How to Write a ComponentListener的部分,了解更多信息和工作示例