a9443 2017-04-20 01:32 采纳率: 0%
浏览 2422

一个画椭圆的JAVA程序

我就想知道mouseDragged方法中else里面的px1=e.getX()和py1=e.getY() 这两句是干嘛用的?前面mouseMoved方法中不是给px1,py1赋值过了吗,这里再赋值一次是为了什么?而且这里再次赋值了之后下面 px2=Math.abs(e.getX()-px1); py2=Math.abs(e.getY()-py1); 这两句我也是一脸懵逼啊,前边再次赋值的时候不是 px1=e.getX(),py1=e.getY()吗,那相减不是等于0嘛?!我是菜鸟啊不是很理解其中的意思,希望各位大神来帮我解释下,万分感谢!!!

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class App14_4 extends JFrame implements MouseMotionListener,MouseListener
{
static App14_4 frm=new App14_4();
int px1,py1,px2,py2,status=0;
int rpx1,rpy1,rpx2,rpy2;
public static void main(String[] args)
{
frm.setTitle("鼠标拖动画椭圆");
frm.setSize(250,230);
frm.addMouseListener(frm);
frm.addMouseMotionListener(frm);
frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
px1=e.getX();
py1=e.getY();
status=0;
}
public void mouseDragged(MouseEvent e)
{
Graphics g=this.getGraphics();
g.setColor(Color.YELLOW);
g.setXORMode(Color.BLACK);
if(status==1)
g.drawOval(px1, py1, px2, py2);
else{
px1=e.getX();
py1=e.getY();
status=1;
}
px2=Math.abs(e.getX()-px1);
py2=Math.abs(e.getY()-py1);
g.drawOval(px1, py1, px2, py2);
rpx1=px1;rpy1=py1;rpx2=px2;rpy2=py2;
}
public void mouseReleased(MouseEvent e)
{
Graphics g=this.getGraphics();
g.setColor(Color.RED);
g.drawOval(rpx1, rpy1, rpx2, rpy2);
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

}
@Override
public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

}
@Override
public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub

}

}

  • 写回答

1条回答 默认 最新

  • 低调的洋仔 博客专家认证 2017-04-20 01:47
    关注

    相当于记住鼠标开始拖动的位置,moved是鼠标当前的位置吧,这个moved应该不是在拖动的时候

    评论

报告相同问题?

悬赏问题

  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档