0

除了其他书籍外,我还通过斯坦福公开课程学习 Java。

目前我正在做一个名为 Breakout 的任务。

我理解 addMouseListeners() 和 addKeyListeners 到画布的概念。

但是,我在概念上(和代码级别)无法理解如何对我在画布上创建的现有对象调用方法调用。我的主要问题是概念性的——当我也将对象声明为私有实例变量时,为什么不能使用鼠标和键侦听器更改现有对象的状态。

这是解释我在哪里遇到问题的最基本的代码。(请注意,我也导入了 JSwing 库——但是到目前为止我还没有在斯坦福课程或我一直在使用的其他资源中使用它。因此,我不了解它)。任何和所有的帮助表示赞赏。

/*
 * File: Example.java
 * Name: Jasjeet
 */

import acm.graphics.*;
import acm.program.*;
import acm.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Example extends GraphicsProgram {  
    public void run() {
        int width = getWidth();             // width of window in pixels
        int height = getHeight();            // height of window in pixels

        int x = (width/2) - 36;              // x coordinates for GRect
        int y = (height/2) - 36;              // y coordinates for GRect


GRect outer = new GRect (x, y, 72, 72);              //Adding a new GRect
        add(outer);
        outer.setColor(Color.red);
        outer.setFillColor(Color.red);
        outer.setFilled(true);

addKeyListeners();                                // added Key Listeners to the canvas
addMouseListeners();                           // added Mouse Listeners to the   canvas
}

/* Trying to invoke a mouse click evnt below but it does not do anything to the GRect*/

public void mouseClicked(MouseEvent e) {  
    while (true) {
    if (e.getX() > 0 && e.getY()<50) {
    outer.move(1, 0);
    pause(50);
 }
 else {
    outer.move(-1, 0);
    pause(50);
 }
}

private GRect outer;             // Declared the GRect outer as a private instance var

}
4

0 回答 0