如何处理GraphicsProgram(ACM库)的窗口大小?

时间:2012-11-14 13:11:09

标签: java acm-java-libraries

我想定义窗口的大小,但我找不到干净的方法来做到这一点。 SetSize()给出了一个奇怪的结果:

public class Test extends GraphicsProgram {

    public void run() {

        setSize(400, 600);
        add(new GLabel("Width: " + getWidth(), 30, 30));
        add(new GLabel("Height: " + getHeight(), 30, 50));
    }

}

结果是384 x 542.差距始终相同(-16 x -58),因此很容易构建一个解决方案。有没有办法直接定义有用像素的大小?

3 个答案:

答案 0 :(得分:1)

我在研究斯坦福大学课程项目(突破)的代码时找到了解决方案。 GraphicsProgram不是根据其字段WIDTHHEIGHTEASTCENTER等自动构建的。因此,我们需要resize()来设置acm.program.GraphicsProgramjava.applet.Applet继承的窗口大小。 只需添加resize()pause()即可完成工作。

public class Test extends GraphicsProgram {
    private static final int WIDTH = 400;
    private static final int HEIGHT = 600;
    private static final int PAUSE = 10; // or whatever interval you like

    public void run() {
        this.resize(WIDTH,HEIGHT);
        pause(PAUSE);
        // game logic here
        ...
    }

}

pause()是必要的,因为调整大小需要时间。如果您在调整大小后立即添加它们,它可以避免组件的错误位移。

答案 1 :(得分:1)

public void init() {

    setSize(400, 600);


}

而不是在run方法中设置大小,而不是在init!

上执行

答案 2 :(得分:0)

课后:
public static final int APPLICATION_WIDTH = 900; // x size of window

运行前:
public static final int APPLICATION_HEIGHT = 540; // y size of window