Java setsize不会立即调整大小
我正在使用一个简单的棋盘程序,它工作得很好,但它非常小。我尝试使用acm.graphics.setsize方法调整窗口大小,但直到我放置图形对象之后,它才调整大小。我需要做些什么来刷新对程序的更改,使其正常工作吗 谢谢Java setsize不会立即调整大小,java,Java,我正在使用一个简单的棋盘程序,它工作得很好,但它非常小。我尝试使用acm.graphics.setsize方法调整窗口大小,但直到我放置图形对象之后,它才调整大小。我需要做些什么来刷新对程序的更改,使其正常工作吗 谢谢 /* File CheckerBoard.java * ---------------------- * This program creates a checkerboard */ import acm.graphics.*; import acm.program.*;
/* 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方法,但两者都完全按照广告中的方式工作。谢谢@卡西乌斯只是一个提示,但如果我的回答解决了你的问题,接受它将是一件好事。我想我接受了。抱歉-我单击了向上箭头,但没有单击复选标记。再次感谢!