所以基本上我用Java构建一个迷你游戏,我希望Canvas组件的内容能够根据窗口进行扩展。 size,这是一个JFrame。我想要的原因是因为我在全屏幕上运行游戏,显然并非所有屏幕都具有相同的尺寸。
这是Window类,Game参数是我想根据JFrame大小扩展的主要Canvas组件:
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();
有人可以帮忙吗?
P.S。很抱歉,如果格式化很糟糕,请先在stackoverflow上发布。
答案 0 :(得分:0)
我用Graphics类绘制一些对象,我也有一些精灵是缓冲图像。
您可以在面板中添加ComponentListener
。当框架可见时,将生成componentResized
事件。然后你做图像缩放计算。
阅读How to Write a ComponentListener上Swing教程中的部分,了解更多信息和工作示例。