Tracker.java

Download testbed2.zip

See also

Capacitor.java
GridPanel.java


Tracker.java

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

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

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

     	addMouseMotionListener( this );
    }

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

    public void mouseDragged( MouseEvent e )
   {
   }

   public void mouseMoved( MouseEvent e )
   {
	int mx = e.getX();
	int my = e.getY();
	Point2D src = new Point2D.Double(mx,my);
	Point2D grid = new Point2D.Double();
	tf.transform(src,grid);
	String str = String.format("Mouse %d %d Grid  [ %.2g, %.2g]",mx,my,grid.getX(),-grid.getY());

	Point2D dst = new Point2D.Double();
	boolean inside = false;
	inside = c1.getLocation(grid,dst); 
	if (inside) str = String.format("inside %s: [%.2g %.2g]",c1.name, dst.getX(),-dst.getY());

	status.setText( str );
   }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(() -> {
		Tracker panel = new Tracker();
		JFrame application = new JFrame("Tracker");
		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 14:57:06 2020