Окно 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 не может найти ваши объявления.