2

私は単純なチェッカーボード プログラムを使用していますが、問題なく動作しますが、非常に小さいです。acm.graphics.setsize メソッドを使用してウィンドウのサイズを変更しようとしましたが、グラフィック オブジェクトを配置するまでサイズが変更されません。プログラムが正しく動作するように、プログラムへの変更を「フラッシュ」するために何かをする必要がありますか?

ありがとう

/* File CheckerBoard.java
 * ----------------------
 * This program creates a checkerboard
 */

import acm.graphics.*;
import acm.program.*;

/* This class draws a checkerboard on the graphics window. 
 * The size of the checkerboard is determined by the
 * constants NROWS and NCOLUMNS, and the checkerboard fills
 * the verticle space available.
 */

public class CheckerBoard extends GraphicsProgram 
{
        /* Number of rows */
    private static final int NROWS = 8;

    /* Number of columns */
    private static final int NCOLUMNS = 8;

    // Window Size
    private static final int height = 1024;
    private static final int width = 1024;


    /* Runs the program */
    public void run() 
    {
        setSize(height,width);

        int sqSize = getHeight() / NROWS;
        for (int i = 0; i < NROWS; i++) 
        {
            for (int j = 0; j < NCOLUMNS; j++) 
            {
                int x = j * sqSize;
                int y = i * sqSize;
                GRect sq = new GRect (x, y, sqSize, sqSize);
                sq.setFilled(((i + j) % 2) != 0);
                add (sq);
            }
        }
    }
}
4

1 に答える 1

4

validate()を適用するには、電話する必要がありますsetSize()。それ以外の場合validate()は、手遅れになるまで呼び出されません。validate()一般に、初期化後のサイズ変更またはスタイル変更に関連する場合に、グラフィカル ユーザー インターフェイス クラスの特定の操作を「検証」するために使用されます。

    setSize(height,width);
    validate();

ただし、アプレットをセットアップするために自由に使用できる方法を使用する必要があります。その場合、手動で呼び出す必要はありません。例:init()validate()

public void init() {
    setSize(height,width);
}

/* Runs the program */
public void run() 
{
    int sqSize = getHeight() / NROWS;
    for (int i = 0; i < NROWS; i++) 
    {
        for (int j = 0; j < NCOLUMNS; j++) 
        {
            int x = j * sqSize;
            int y = i * sqSize;
            GRect sq = new GRect (x, y, sqSize, sqSize);
            sq.setFilled(((i + j) % 2) != 0);
            add (sq);
        }
    }
}
于 2013-08-05T01:36:20.013 に答える