填空题
【说明】
以下程序实现了利用鼠标任意移动该圆形的位置,仔细阅读代码和相关注释,将程序补充完整。
【代码6】
import java.awt.*;
import java.awt.event.*;
public class CIUSAMPLE extends Frame implements MouseMotionListener, MouseListener
{
static CIUSAMPLE frm=new CIUSAMPLE ();
int x=70,y=60,posX=70,posY=60,dx,dy;
public static void main ( String args[])
{
frm.setTitle ("Dragging a circle");
frm.setSize ( 200,150 );
{{U}} (1) {{/U}}
frm.addMouseMotionListener ( frm );
frm. setVisible ( true );
}
public void mousePressed ( MouseEvent e )
{
{{U}} (2) {{/U}}
dy=e.getY () -posY;
}
public void mouseDragged ( MouseEvent e )
{
{{U}} (3) {{/U}}
y=e.getY () -dy;
if ( dx>0 && dx<50 && dy>0 && dy<50 ) //如果指我落在正方形区域内
{
Graphics g=getGraphics ();
{{U}} (4) {{/U}}
}
}
public void paint ( Graphics g )
{
g.setColor ( Color. pink ); // 设置绘图颜色为粉红
g.fillOval ( x,y,50,50 ); //以基准点为图形的左上角绘出圆形
{{U}} (5) {{/U}}
posY=y;
}
public void mouseMoved ( MouseEvent e ) { }
public void mouseReleased ( MouseEvent e ) { }
public void mouseEntered ( MouseEvent e ) { }
public void mouseExited ( MouseEvent e ) { }
public void mouseClicked ( MouseEvent e ) { }
}
【正确答案】
1、题目中的程序实现了利用鼠标任意移动该圆形的位置。分析代码可知:(1)实现了对鼠标位置的检测; (2)取得鼠标按下的点与基准点X方向的距离;(3)取得拖曳时的基准点的X坐标;(4)清空画面为背景颜色;(5)更新基准点的X坐标。
【答案解析】(1) frm.addMouseListener(frm);
(2) dx=e.getX()-posX;
(3) x=e.getX()-dx;
(4) update(g);
(5) posX=x;