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