gpt4 book ai didi

java - setsize 不会立即调整大小

转载 作者:行者123 更新时间:2023-11-30 07:15:06 28 4
gpt4 key购买 nike

我正在使用一个简单的棋盘程序,它运行良好,但它非常小。我尝试使用 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);
}
}
}

关于java - setsize 不会立即调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18049370/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com