我想定义窗口的大小,但我找不到干净的方法来做到这一点。 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),因此很容易构建一个解决方案。有没有办法直接定义有用像素的大小?
答案 0 :(得分:1)
我在研究斯坦福大学课程项目(突破)的代码时找到了解决方案。 GraphicsProgram不是根据其字段WIDTH
,HEIGHT
,EAST
,CENTER
等自动构建的。因此,我们需要resize()
来设置acm.program.GraphicsProgram从java.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