有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

基于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) 个答案

  1. # 1 楼答案

    I draw some objects with Graphics class and I also have some sprites which are buffered images.

    您可以在面板中添加ComponentListener。当框架可见时,将生成componentResized事件。然后进行图像缩放计算

    阅读Swing教程中关于How to Write a ComponentListener的部分,了解更多信息和工作示例