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));
    }

}

結果は384x542です。ギャップは常に同じ(-16 x -58)であるため、回避策を簡単に作成できます。有用なピクセルでサイズを直接定義する方法はありますか?

4

4 に答える 4

1

スタンフォード コース プロジェクト (ブレイクアウト) のコードを勉強しているときに、これに対する解決策を見つけました。WIDTHGraphicsProgram は、そのフィールド、 、HEIGHT、などに従って自動的EASTに構築されません。CENTERしたがって、acm.program.GraphicsProgramがjava.applet.Appletから継承するresize()ウィンドウ サイズを設定する必要があります。andを追加するだけで機能します。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 に答える