0

我正在上一个使用 Eric S. Roberts 的书“Java 的艺术与科学”的 iTunesU 课程。这本书声称,如果我扩展GraphicsProgram(acm.program JAR 的一部分),那么我可以简单地声明命名的常量APPLICATION_WIDTHAPPLICATION_HEIGHT给它们赋值,然后GraphicsProgram看看我是否已经这样做并相应地调整窗口大小。我可以通过添加以下内容来调整窗口大小:

setSize(APPLICATION_WIDTH, APPLICATION_HEIGHT +CITATION_MARGIN);

在我的run()方法中,但根据这本书我不应该这样做。这本书是在骗我还是我错过了什么?继承人的代码:

/*
 * 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);
    }
}

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

4

1 回答 1

0

罗伯茨教授不会骗你的。从他的好书中仔细检查您正在使用的代码将表明有问题的常量(APPLICATION_WIDTH 和 APPLICATION_HEIGHT)需要声明为 PUBLIC,而不是您拥有的 PRIVATE。当您拥有它们时,ACM 程序类找不到您的声明。

于 2014-02-18T18:11:02.267 回答