使用鼠标侦听器拖动对象

休·特林(Huy Trinh)

我正在尝试创建一个程序,该程序使用户能够在空间中拖放椭圆形。我可以拖放,但是在第二次尝试再次尝试后,椭圆形的位置到处都跳了起来。我想知道是否有人知道为什么会这样?我想念什么吗?谢谢

public class MoveOval extends JFrame {

private Ellipse2D node = new Ellipse2D.Float(200,200,80,120);
private Point offset;
private int preX,preY;
private Image dbImage;
private Graphics dbg;
Adapter ma = new Adapter();

public static void main(String args[]){
    JFrame frame = new MoveOval();
    frame.setSize(600,600); 
    frame.setVisible(true);
}

public MoveOval(){
    super("Move Oval");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    addMouseListener(ma);
    addMouseMotionListener(ma);

}
private class Adapter extends MouseAdapter{
    public void mousePressed(MouseEvent e){
        if(node.contains(e.getPoint())){
            preX = node.getBounds().x-e.getX();
            preY = node.getBounds().y-e.getX();
            offset = new Point(preX, preY);
        }
    }
    public void mouseDragged(MouseEvent e){
        if(node.contains(e.getPoint())){
            updateLocation(e);
        }
    }
    public void mouseReleased(MouseEvent e) {
           offset=null;
      }

}

public void updateLocation(MouseEvent e){
    Point to = e.getPoint();
    to.x += offset.x;
    to.y += offset.y;

    Rectangle bounds = node.getBounds();
    bounds.setLocation(to);
    node.setFrame(bounds);

    repaint();
}

public void paint(Graphics g){
    dbImage=createImage(getWidth(), getHeight());
    dbg = dbImage.getGraphics();
    paintComponent(dbg);
    g.drawImage(dbImage, 0, 0, this);
}
public void paintComponent(Graphics g){
    Graphics2D gd = (Graphics2D)g.create();
    gd.setColor(Color.blue);
    gd.fill(node);

    }
}
标记

实际上,这是一个非常简单的错误,而且很容易解决。

public void mousePressed(MouseEvent e){
        if(node.contains(e.getPoint())){
            preX = node.getBounds().x-e.getX();
            preY = node.getBounds().y-e.getX(); // <- That's the bad guy.
            offset = new Point(preX, preY);
        }
    }

它必须是-e.getY()而不是-e.getX()。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用鼠标侦听器拖动对象

来自分类Dev

从使用鼠标侦听器选择的对象中获取信息

来自分类Dev

鼠标侦听器类

来自分类Dev

绘图透明区域未使用拖动侦听器更新

来自分类Dev

java - 如何实现有助于在java中拖动圆圈的鼠标侦听器?

来自分类Dev

使用Android内置的手势侦听器和缩放侦听器实现捏缩放和拖动

来自分类Dev

侦听器的对象标识

来自分类Dev

鼠标侦听器on_move事件

来自分类Dev

QT全局鼠标侦听器

来自分类Dev

使用Instantiate()克隆对象会丢失侦听器

来自分类Dev

使用Instantiate()克隆对象会丢失侦听器

来自分类Dev

如何使用Chrome扩展程序(内容脚本)覆盖拖动事件侦听器?

来自分类Dev

JTable鼠标侦听器鼠标适配器

来自分类Dev

使用WeakReferenced侦听器

来自分类Dev

将拖动事件侦听器添加到iframe

来自分类Dev

JFXtras将侦听器添加到拖动约会

来自分类Dev

JavaFX 静默吞下拖动侦听器中引发的异常

来自分类Dev

使用Syn.js的事件侦听器未触发鼠标事件

来自分类Dev

是否可以在Windows平板电脑上使用鼠标侦听器?

来自分类Dev

在Java中使用鼠标侦听器时如何跨变量发送

来自分类Dev

如何将键侦听器更改为鼠标侦听器

来自分类Dev

添加范围对象侦听器

来自分类Dev

Java事件侦听器(鼠标和键盘)

来自分类Dev

如何在JAVA中添加鼠标侦听器?

来自分类Dev

JMapViewer将鼠标侦听器添加到MapMarkerDot

来自分类Dev

Extjs 6添加图表鼠标侦听器

来自分类Dev

叠加层元素鼠标侦听器ScalaFx / JavaFx执行

来自分类Dev

用Javascript抽象鼠标单击侦听器

来自分类Dev

JFreeChart XYPlot XYImageAnnotation鼠标单击侦听器

Related 相关文章

热门标签

归档