//************************************************************************ //Program name: //Problem Desrciption: // //Name: //Date: //class: //************************************************************************ import java.awt.*; import java.applet.*; import java.awt.event.*; import java.text.*; //*********************************************************************** // class that handles mouse events // // keeping track of the mouse location and whether // or not a button is pressed //*********************************************************************** class TheMouseHandler extends MouseAdapter implements MouseMotionListener { ComputeFigure theCurrentApplet; public TheMouseHandler(ComputeFigure x) { theCurrentApplet=x; } public void mouseEntered(MouseEvent e) { theCurrentApplet.x=0; theCurrentApplet.y=0; theCurrentApplet.width=0; theCurrentApplet.height=0; theCurrentApplet.repaint(); } public void mouseExited(MouseEvent e) { theCurrentApplet.x=0; theCurrentApplet.y=0; theCurrentApplet.width=0; theCurrentApplet.height=0; theCurrentApplet.repaint(); } public void mouseDragged(MouseEvent e) { theCurrentApplet.width=e.getX()-theCurrentApplet.x; theCurrentApplet.height=e.getY()-theCurrentApplet.y; theCurrentApplet.repaint(); } public void mouseMoved(MouseEvent e) { //empty on purpose } public void mousePressed(MouseEvent e) { theCurrentApplet.x=e.getX(); theCurrentApplet.y=e.getY(); } } //****************************************************************** // class that handles which button has been pushed // // //****************************************************************** class TheButtonHandler implements ActionListener { ComputeFigure currentApplet; public void actionPerformed(ActionEvent e) { System.out.println(e.getActionCommand()); currentApplet.figure=e.getActionCommand(); } public TheButtonHandler(ComputeFigure x) { currentApplet=x; } } //***************************************************************** public class ComputeFigure extends Applet { //gui elements Button circleButton; Button rectangleButton; TheMouseHandler mouseManager; TheButtonHandler buttonManager; Panel holdbuttons; //instance variables int x,y,height,width; String figure; public void init() { //instantiate classes mouseManager=new TheMouseHandler(this); buttonManager=new TheButtonHandler(this); holdbuttons=new Panel(); circleButton=new Button("Circle"); rectangleButton=new Button("Rectangle"); //set initial default values figure="Circle"; x=50; y=50; width=50; height=50; addMouseMotionListener(mouseManager); addMouseListener(mouseManager); circleButton.addActionListener(buttonManager); circleButton.setBackground(Color.red); rectangleButton.addActionListener(buttonManager); rectangleButton.setBackground(Color.green); setLayout(new BorderLayout()); holdbuttons.add(circleButton); holdbuttons.add(rectangleButton); add("North",holdbuttons); setBackground(Color.pink); } public void paint(Graphics g) { NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(2); double area = 0; double perimeter = 0; double centerx = 0; double centery = 0; double diameter ; double top_left_y =x; double top_left_x =y; if(width > height) diameter = width; else diameter = height; double r = diameter/2; if(figure.equals("Circle") ) { g.drawOval(x,y,(int)diameter,(int)diameter); //put computations here for circle area = Math.PI * Math.pow(r,2); perimeter = Math.PI * 2 * r ; centerx = x + (diameter/2); centery = y + (diameter/2); //end circle computations } else { g.drawRect(x,y,width,height); //put computations here for rectangle area = height * width; perimeter = 2*height + 2 * width ; centerx = x + width/2 ; centery = y + height/2 ; //end Rectangle computations } g.drawString("Area= " + nf.format(area), 120,320); g.drawString("Perimater="+ perimeter, 120,360); g.drawString("Center(x,y) =("+ centerx + "," + centery + ")", 120, 340); g.drawString("Top Left Corner (x,y) = ("+ x+","+y+")",120,380); } }