java编程实现使用鼠标移动一个圆

这篇具有很好参考价值的文章主要介绍了java编程实现使用鼠标移动一个圆。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如下练习:

java编程实现使用鼠标移动一个圆

主要利用鼠标移动事件和(按下、释放、单击、进入或离开)鼠标事件,当鼠标点击时,发生mousePressed事件,判断鼠标点击的坐标是否在圆内,在移动鼠标,发生mouseDragged事件,

如果鼠标刚开始按下时在圆内,按下移动鼠标时,更新圆的坐标,当释放鼠标时,移动圆结束。

鼠标移动事件需要实现下面两个方法:

public void mouseDragged(MouseEvent e)鼠标按键在组件上按下并拖动时调用。在释放鼠标按键前,MOUSE_DRAGGED 事件被连续地传递到发起该拖动的组件(而不管鼠标位置是否处于该组件的边界内)。 
public void mouseMoved(MouseEvent e)鼠标光标移动到组件上但无按键按下时调用。 

面板代码如下:

class OvalMove extends JPanel implements MouseMotionListener,MouseListener
{
    int x,y;
    boolean flag = false;
    boolean isClickinCircle = false;
    int radius = 20;
    int dx,dy;
    public OvalMove()
    {
        dx = 0;
        dy = 0;
        x = 146;
        y = 120;
        addMouseMotionListener(this);
        addMouseListener(this);
        
    }
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.setColor(Color.red);
        g.fillOval(x, y, radius, radius);
    }
    public Dimension getPreferredSize()
    {
        return new Dimension(500,300);
    }
    
    public void mouseClicked(MouseEvent e) {}
    @Override
    public void mousePressed(MouseEvent e)
    {
        int x1 = e.getX();
        int y1 = e.getY();
        int dist = (x1-x-radius/2)*(x1-x-radius/2) + (y1-y-radius/2)*(y1-y-radius/2);
        if(dist<=radius*radius/4) 
        {
            dx = x1-x;
            dy = y1-y;
            isClickinCircle = true;
        }
        else
            
            isClickinCircle = false;
        System.out.println(e.getX()+":"+e.getY());
    }
    public void mouseReleased(MouseEvent e)
    {
        isClickinCircle = false;
    }
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mouseDragged(MouseEvent e)
    {
        if(isClickinCircle)
        {
            x = e.getX()-dx;
            y = e.getY()-dy;
            repaint(); 
        }
            System.out.println(":"+e.getX()+":"+e.getY());  
    }
  
    public void mouseMoved(MouseEvent e) {} 
}

圆的坐标初始值是具体值,设置了圆的填充色。效果如下:

java编程实现使用鼠标移动一个圆

这里主要是解决问题的思路,供大家参考。

由于水平有限,如果有错误,请大家多多指导,提高水平,共同学习。文章来源地址https://www.toymoban.com/news/detail-511767.html

到了这里,关于java编程实现使用鼠标移动一个圆的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包