TestDrag1.java

Download testbed2.zip

Program allows user to drag the object no matter where the mouse is.

See also

Capacitor.java
GridPanel.java


TestDrag1.java

// TestDrag1.java
import java.awt.*;
import java.util.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;

public class TestDrag1 extends GridPanel implements MouseMotionListener
{
    Capacitor c1;
    JLabel status = new JLabel(" ");
    double xoffset, yoffset;

    TestDrag1()
    {
	c1 = new Capacitor();
        c1.setPosition(0.0,1.0);
        c1.setAngle(30.0);
        c1.color = Color.BLUE;
	c1.name = "C1";
	status.setBackground(Color.WHITE);
	status.setOpaque(true);
	status.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));

     	addMouseMotionListener( this );
        addMouseListener(new MouseHandler());
    }

   public void drawContent(Graphics g)
   {
	c1.draw(g);
   }

   private class MouseHandler extends MouseAdapter
   {
      public void mousePressed(MouseEvent e)
      {
	Point2D src = new Point2D.Double(e.getX(),e.getY());
	Point2D dst = new Point2D.Double();
	tf.transform(src,dst);
	xoffset = c1.xpos - dst.getX();
	yoffset = c1.ypos + dst.getY();
      }
      public void mouseReleased(MouseEvent e)
     {
	status.setText(" ");
     }
   }

    public void mouseDragged( MouseEvent e )
   {
	Point2D src = new Point2D.Double(e.getX(),e.getY());
	Point2D dst = new Point2D.Double();
	tf.transform(src,dst);
	c1.setPosition(dst.getX()+xoffset,-dst.getY()+yoffset);
	repaint();
	String str = String.format("Cursor dragged to [ %.2g, %.2g]",dst.getX(),-dst.getY());
	
      status.setText(str );
   }

   public void mouseMoved( MouseEvent e )
   {

   }


    public static void main(String[] args)
    {
        EventQueue.invokeLater(() -> {
		TestDrag1 panel = new TestDrag1();
		JFrame application = new JFrame("TestDrag1");
		application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		application.add(panel);
		application.add(panel.status,BorderLayout.SOUTH);
		application.setSize(496,400);
		application.setVisible(true);
	});
    }
}


Maintained by John Loomis, updated Thu Feb 20 15:23:38 2020