Окно acm.graphics APPLICATION_WIDTH и APPLICATION_HEIGHT не изменяют размер окна

Я посещаю урок iTunesU, в котором используется книга Эрика С. Робертса "Искусство и наука о Java". Книга утверждает, что если я продлю GraphicsProgram (часть JAR acm.program), тогда я могу просто объявить константы с именем APPLICATION_WIDTH а также APPLICATION_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);
    }
}

Я видел вопросы, похожие на мои, но ни один из них не касался возможности простого объявления констант для изменения размера окна.

1 ответ

Решение

Профессор Робертс не будет вам врать. Более внимательное изучение кода, который вы используете из его прекрасной книги, покажет, что рассматриваемые CONSTANTS (APPLICATION_WIDTH & APPLICATION_HEIGHT) должны быть объявлены как PUBLIC, а не PRIVATE, как они у вас есть. Как у вас есть, программный класс ACM не может найти ваши объявления.

Другие вопросы по тегам