3

我想定义窗口的大小,但我没有找到一个干净的方法来做到这一点。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),因此很容易构建一个变通方案。有没有办法直接定义有用像素的大小?

4

4 回答 4

1

在研究斯坦福课程项目(突破)的代码时,我找到了解决方案。GraphicsProgram 不会根据其字段 、、WIDTH等自动构建。因此我们需要设置acm.program.GraphicsProgramjava.applet.Applet继承的窗口大小。只需添加一个and即可完成工作。HEIGHTEASTCENTERresize()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()是必要的,因为调整大小需要时间。如果您在调整大小后立即添加组件,它可以避免组件的错误位移。

于 2014-10-29T07:39:25.417 回答
1
public void init() {

    setSize(400, 600);


}

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

于 2015-02-09T12:43:39.613 回答
1

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

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

于 2021-02-21T20:28:16.560 回答
0

无需 setSize 或调整大小。

您只需要添加这两个公共变量:

/** Width and height of application window in pixels */
public static final int APPLICATION_WIDTH = 400;
public static final int APPLICATION_HEIGHT = 600;

如果您需要完全使用 WIDTH 和 HEIGHT 这两个:

/** Dimensions of window (usually the same) */
private static final int WIDTH = APPLICATION_WIDTH;
private static final int HEIGHT = APPLICATION_HEIGHT;
于 2022-01-10T11:54:23.720 回答