私は他の本に加えて、スタンフォードの公開コースで 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
}