Download testbed2.zip
See also
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