Java acm.graphics应用程序\u宽度和应用程序\u高度常数不调整窗口大小

Java acm.graphics应用程序\u宽度和应用程序\u高度常数不调整窗口大小,java,acm-java-libraries,Java,Acm Java Libraries,我正在学习一门iTunesU课程,它使用了Eric S.Roberts的书《Java的艺术与科学》。这本书声称,如果我扩展acm.program JAR的GraphicsProgram部分,那么我可以简单地声明名为APPLICATION_WIDTH和APPLICATION_HEIGHT的常量,并给它们赋值,GraphicsProgram将查看我是否这样做,并相应地调整窗口大小。我可以通过添加以下内容来调整窗口的大小: setSize(APPLICATION_WIDTH, APPLICATION_

我正在学习一门iTunesU课程,它使用了Eric S.Roberts的书《Java的艺术与科学》。这本书声称,如果我扩展acm.program JAR的GraphicsProgram部分,那么我可以简单地声明名为APPLICATION_WIDTH和APPLICATION_HEIGHT的常量,并给它们赋值,GraphicsProgram将查看我是否这样做,并相应地调整窗口大小。我可以通过添加以下内容来调整窗口的大小:

setSize(APPLICATION_WIDTH, APPLICATION_HEIGHT +CITATION_MARGIN);
按照我的跑步方法,但根据书上的说法,我不应该这样做。这本书是在骗我还是我遗漏了什么?代码如下:

/*
 * File: FryImage.java
 * -------------------
 * This program displays an image with a citation to the
 * graphics window.
 */


package chap9;

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

public class FryImage extends GraphicsProgram {
// Citation constants
private static final String CITATION_FONT = "SansSerif-10";
private static final int CITATION_MARGIN = 30;

// dimensions of window
private static final int APPLICATION_WIDTH = 640;
private static final int APPLICATION_HEIGHT = 640 + CITATION_MARGIN;

public void run(){
    add(new GImage("ProfAlive.jpg"));
    addCitation("Courtesy of Reddit Weekly");
}

// Adds citation along bottom of window
private void addCitation(String text) {
    GLabel label = new GLabel(text);
    label.setFont(CITATION_FONT);
        double x = (getWidth() - label.getWidth()) / 2;
    double y = getHeight() - CITATION_MARGIN + label.getAscent();
    add(label, x, y);
    }
}

我看到了与我类似的问题,但没有一个涉及到简单地声明常量以调整窗口大小的能力。

罗伯茨教授不会对你撒谎。仔细检查一下你在他那本好书中使用的代码,就会发现有问题的APPLICATION\u WIDTH&APPLICATION\u HEIGHT中的常量需要声明为PUBLIC,而不是像你所拥有的那样是PRIVATE。由于您拥有它们,ACM程序类找不到您的声明。

setSize是从类java.awt.Component继承的方法,您需要为其设置发票以更改窗口大小。我确实认识到这是可行的。但是根据我正在使用的这本书,GraphicsProgram的任何子类都应该只需要应用程序宽度和应用程序高度的常量声明。我知道这可能看起来很傻,因为我写的设置大小的作品很好,但我很好奇,如果为任何人宣布恒定的作品,如果是的话,他们知道为什么它不在这里工作。非常感谢!我并不是说他在骗我,我知道最后我错过了什么。这是一本很棒的书,我很喜欢和它一起工作。再次感谢你的回答。@Eric我只是想用你的方式开点玩笑。有时候,不管你看了多长时间,你都看不到明显的错误。很高兴我能帮忙。我同意,这是一本很棒的书,值得花这么多钱。