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

一个画椭圆的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 算法题:数的划分,用记忆化DFS做WA求调
  • ¥15 chatglm-6b应用到django项目中,模型加载失败
  • ¥15 武汉岩海低应变分析软件,导数据库里不显示波形图
  • ¥15 CreateBitmapFromWicBitmap内存释放问题。
  • ¥30 win c++ socket
  • ¥30 CanMv K210开发板实现功能
  • ¥15 C# datagridview 栏位进度
  • ¥15 vue3页面el-table页面数据过多
  • ¥100 vue3中融入gRPC-web
  • ¥15 kali环境运行volatility分析android内存文件,缺profile