Java setsize不会立即调整大小

Java setsize不会立即调整大小,java,Java,我正在使用一个简单的棋盘程序,它工作得很好,但它非常小。我尝试使用acm.graphics.setsize方法调整窗口大小,但直到我放置图形对象之后,它才调整大小。我需要做些什么来刷新对程序的更改,使其正常工作吗 谢谢 /* File CheckerBoard.java * ---------------------- * This program creates a checkerboard */ import acm.graphics.*; import acm.program.*;

我正在使用一个简单的棋盘程序,它工作得很好,但它非常小。我尝试使用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);
            }
        }
    }
}
您需要调用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);
        }
    }
}
您需要调用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);
        }
    }
}

我注意到有人出于某种原因问了这个问题a-1。大家都知道,我一直在网上搜索,特别是在acm文档中寻找这个看似基本的问题的答案。出于某种原因,我注意到有人问了这个问题a-1。大家都知道,我一直在网上搜索,特别是在acm文档中,寻找这个看似基本的问题的答案。F.R.E.A.K.I.N。R.O.C.K.好几天了,我一直在寻找这个简单的答案?我将使用上面显示的init方法,因为我怀疑我会在某个时候使用init方法,但两者都完全按照广告中的方式工作。谢谢@卡西乌斯只是一个提示,但如果我的回答解决了你的问题,接受它将是一件好事。我想我接受了。抱歉-我单击了向上箭头,但没有单击复选标记。再次感谢!Y.O.U.F.R.E.A.K.I.N。R.O.C.K.好几天了,我一直在寻找这个简单的答案?我将使用上面显示的init方法,因为我怀疑我会在某个时候使用init方法,但两者都完全按照广告中的方式工作。谢谢@卡西乌斯只是一个提示,但如果我的回答解决了你的问题,接受它将是一件好事。我想我接受了。抱歉-我单击了向上箭头,但没有单击复选标记。再次感谢!