Task Write a Java program to implement a simple graphics edi
Task: Write a Java program to implement a simple graphics editor that can be used to draw a Pythagoras. The editor has a pull-down menu on top of the screen, with 2 buttons: \"Pythagoras\" and \"Quit\". 1) When the user selects \"Pythagoras\", he/she can draw a tree of Pythagoras on the screen. 2) The editor terminates/quits execution if the user selects \"Quit\" from the pulldown menu. 3) The editor has a horizontal and a vertical sliding bar that when slided, moves the tree on the canvas accordingly.
Solution
HOpe this will help--
import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import javax.swing.ButtonGroup;
 import javax.swing.JFrame;
 import javax.swing.JMenu;
 import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
 public class MenuExp extends JFrame {
    
     public MenuExp() {
        
         setTitle(\"Menu Example\");
         setSize(150, 150);
        
        JSlider framesPerSecond = new JSlider(JSlider.VERTICAL,FPS_MIN, FPS_MAX, FPS_INIT);
        framesPerSecond.addChangeListener(this);
       JSlider framesPerSecond1= new JSlider(JSlider.HORIZONTAL,FPS_MIN, FPS_MAX, FPS_INIT);
        framesPerSecond1.addChangeListener(this);
       
         // Creates a menubar for a JFrame
         JMenuBar menuBar = new JMenuBar();
        
         // Add the menubar to the frame
         setJMenuBar(menuBar);
        
         // Define and add two drop down menu to the menubar
         JMenu fileMenu = new JMenu(\"Process\");
         menuBar.add(fileMenu);
    
        
         // Create and add simple menu item to one of the drop down menu
         JMenuItem newAction = new JMenuItem(\"Pythagoras\");
         JMenuItem openAction = new JMenuItem(\"Quit\");
        
         fileMenu.add(newAction);
         fileMenu.add(openAction);
       
        newAction.addActionListner(new PythagorusListener());
        openAction.addActionListner(new CloseListener());
     
         // Add a listener to the New menu item. actionPerformed() method will
         // invoked, if user triggred this menu item
         newAction.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent arg0) {
                 System.out.println(\"You have clicked on the new action\");
             }
         });
     }
     public static void main(String[] args) {
         MenuExp me = new MenuExp();
         me.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         me.setVisible(true);
     }
 }
public class CloseListener implements ActionListener{
     @Override
     public void actionPerformed(ActionEvent e) {
         //DO SOMETHING
         System.exit(0);
     }
 }
public class PythagorusListener implements ActionListener{
     @Override
     public void actionPerformed(ActionEvent e) {
           setSize(900, 900);
         setTitle(\"Pythagoras tree\");
         add(new Draw(n));
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         setVisible(true);
     }
 }
 class Draw extends JComponent {
     private int height = 800;
     private int width = 800;
     private int steps;
    public Draw(int n) {
         steps = n;
        Dimension d = new Dimension(width, height);
         setMinimumSize(d);
         setPreferredSize(d);
         setMaximumSize(d);
     }
    @Override
     public void paintComponent(Graphics g) {
         super.paintComponent(g);
         g.setColor(Color.white);
         g.fillRect(0, 0, width, height);
         g.setColor(Color.black);
        int x1, x2, x3, y1, y2, y3;
         int base = width/7;
        x1 = (width/2)-(base/2);
         x2 = (width/2)+(base/2);
         x3 = width/2;
         y1 = (height-(height/15))-base;
         y2 = height-(height/15);
         y3 = (height-(height/15))-(base+(base/2));
        //paint
         g.drawPolygon(new int[]{x1, x1, x2, x2, x1}, new int[]{y1, y2, y2, y1, y1}, 5);
        int n1 = steps;
         if(--n1 > 0){
             g.drawPolygon(new int[] {x1, x3, x2}, new int[] {y1, y3, y1}, 3);
             paintMore(n1, g, x1, x3, x2, y1, y3, y1);
             paintMore(n1, g, x2, x3, x1, y1, y3, y1);
         }
     }
    public void paintMore(int n1, Graphics g, double x1_1, double x2_1, double x3_1, double y1_1, double y2_1, double y3_1){
         double x1, x2, x3, y1, y2, y3;
         //counting
         x1 = x1_1 + (x2_1-x3_1);
         x2 = x2_1 + (x2_1-x3_1);
         x3 = ((x2_1 + (x2_1-x3_1)) + ((x2_1-x3_1)/2)) + ((x1_1-x2_1)/2);
         y1 = y1_1 + (y2_1-y3_1);
         y2 = y2_1 + (y2_1-y3_1);
         y3 = ((y1_1 + (y2_1-y3_1)) + ((y2_1-y1_1)/2)) + ((y2_1-y3_1)/2);
        //paint
         g.setColor(Color.green);
         g.drawPolygon(new int[] {(int)x1, (int)x2, (int)x2_1, (int)x1},
                       new int[] {(int)y1, (int)y2, (int)y2_1, (int)y1}, 4);
        g.drawLine((int)x1, (int)y1, (int)x1_1, (int)y1_1);
         g.drawLine((int)x2_1, (int)y2_1, (int)x2, (int)y2);
         g.drawLine((int)x1, (int)y1, (int)x2, (int)y2);
        if(--n1 > 0){
             g.drawLine((int)x1, (int)y1, (int)x3, (int)y3);
             g.drawLine((int)x2, (int)y2, (int)x3, (int)y3);
             paintMore(n1, g, x1, x3, x2, y1, y3, y2);
             paintMore(n1, g, x2, x3, x1, y2, y3, y1);
         }
     }
 }



