0
私はキャンバス上に線を描くことを可能にするGraphicsProgramを書こうとしています。マウスボタンを押すと、行の開始点が設定されます。ドラッグを続けると、マウスをドラッグすると、もう一方の端点が移動します。マウスを離すと、現在の位置に行が固定され、新しい行を開始する準備ができます。シンプルなグラフィックインタラクティブ性
コードを実行すると、行が表示されないことがあります。なぜなら、私が添付している正しいコードでは、それが望ましいものになるのです。
マイコード: `
import acm.program.*;
import java.awt.event.MouseEvent;
import acm.graphics.*;
public class DrawLines extends GraphicsProgram{
public void init(){
addMouseListeners();
line=new GLine(x1,y1,x2,y2);
}
public void mousePressed(MouseEvent e){
x1=e.getX();
y1=e.getY();
}
public void mouseDragged(MouseEvent e){
x2=e.getX();
y2=e.getY();
add(line);
}
private GLine line;
private int x1;
private int y1;
private int x2;
private int y2;
}
正しいコード:
import acm.graphics.*;
import acm.program.*;
import java.awt.event.*;
/** This class allows users to drag lines on the canvas */
public class RubberBanding extends GraphicsProgram {
public void run() {
addMouseListeners();
}
/** Called on mouse press to create a new line */
public void mousePressed(MouseEvent e) {
double x = e.getX();
double y = e.getY();
line = new GLine(x, y, x, y);
add(line);
}
/** Called on mouse drag to reset the endpoint */
public void mouseDragged(MouseEvent e) {
double x = e.getX();
double y = e.getY();
line.setEndPoint(x, y);
}
/* Private instance variables */
private GLine line;
}
GraphicsProgramクラスは実行可能オブジェクトを実装していますか? –