简单的图形交互性



我正在尝试编写一个允许用户在画布上绘制线条的图形程序。按鼠标按钮可设置线条的起点。拖动鼠标会在拖动过程中移动另一个端点。释放鼠标会将行固定在其当前位置,并准备开始新行。

有人可以解释为什么当我运行代码时无法显示行,以及我也附加的正确代码如何使其更可取。

我的代码:'

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; 
} 

第一个程序只创建一个GLine,因为未初始化的int字段初始化为零,所以总是从 (0,0) 到 (0,0)。 在新闻事件和拖动事件上,它会更新变量 x1,y1、x2,y2,但从不对这些值执行任何操作。

每个拖动事件都会将另一个 line 引用(原始 (0,0)-(0,0) 行)添加到要绘制的列表/行集。

相关内容

  • 没有找到相关文章

最新更新