//******************************************************************** // Angle computed by the arctanget function (inverse tangent) // Using Adapter class instead of listener interfaces //******************************************************************** import java.util.ArrayList; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class AnglePanel extends JPanel { private Point p1 = null, p2 = null; private double alpha; int x, y; public AnglePanel() { addMouseMotionListener (new AngleListener()); addMouseListener (new ZeroListener()); setBackground (Color.black); setPreferredSize (new Dimension(400, 300)); } public void paintComponent (Graphics page) { super.paintComponent(page); page.setColor (Color.green); if (p1 != null && p2 != null) { page.drawLine (p1.x, p1.y, p2.x, p2.y); alpha = Math.atan((double)(p2.y-p1.y)/(p2.x-p1.x)); if (p1.x > p2.x) alpha = alpha + Math.PI; if (p1.x < p2.x && p1.y > p2.y) alpha = alpha + 2*Math.PI; page.drawString("Alpha = "+String.valueOf(alpha),5,15); page.drawLine (p1.x-100, p1.y, p1.x+100, p1.y); page.drawLine (p1.x, p1.y-100, p1.x, p1.y+100); page.drawString("0", p1.x-8, p1.y+13); page.drawString("X", p1.x+105, p1.y+5); page.drawString("Y", p1.x-3, p1.y+115); } } private class ZeroListener extends MouseAdapter { public void mousePressed (MouseEvent event) { p1 = event.getPoint(); } } private class AngleListener extends MouseMotionAdapter { public void mouseDragged (MouseEvent event) { p2 = event.getPoint(); repaint(); } } }