title: How to draw graphs using Java Swing
body: <p>I am learning Java Swing. I followed a YouTube lectures playlist that provided this <a href="https://github.com/devindia/graphapp/blob/master/GraphApp.java" rel="nofollow noreferrer">github</a> code for drawing graphs. I am providing the basic structure here:</p>
  
  <pre><code>package graphapp;
  import com.sun.corba.se.impl.orbutil.graph.Graph;
  import java.awt.Color;
  import java.awt.Graphics;
  import java.awt.Image;
  import java.awt.event.KeyAdapter;
  import java.awt.event.KeyEvent;
  import javax.swing.JComboBox;
  import javax.swing.JFrame;
  public class GraphApp extends JFrame {
  
      int x,y;
      int ax,by;
      JComboBox cb,cb1;
      String s="";
      String se ="";
  
     public GraphApp(){ 
      setTitle("Graph App");
      setSize(900,700);
      String[] graphs = {"select..","parabola","ax^2+bx+c","ax^3","y=mx","y=mx+c","sin(x)","cos(x)","tan(x)","sinc function","signum(x)","X-graph","cubic         function","sin+cos unequal amp","sin^3","cos^3","sin^3+cos^3","Amplitude Modulation"};
      cb = new JComboBox(graphs);
  
      cb.setBounds(700, 100, 120, 25);
      add(cb);
      cb.setEditable(false);
      String[] select = {"Draw graph","Erase"};
      cb1 = new JComboBox(select);
  
      cb1.setBounds(700, 150, 120, 25);
      add(cb1);
      cb1.setEditable(false);
  
      setLayout(null); //add it its very important otherwise Combo Box will occupy the whole screen.
  
      setVisible(true);
      setResizable(false);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      x = 30; //x=200;
      y = 300;
  }
  public void paint(Graphics g){
  
      super.paint(g); //This method was not called in The Master Branch at github
      g.setColor(Color.BLACK);
      g.drawString("Design by ..", 700, 400);
      g.drawString("Debasish Roy", 700, 420);
      g.drawString("Y", 310, 40);
      g.drawString("Y'", 310, 600);
      g.drawString("X", 30, 314);
      g.drawString("X'", 600, 314);
      if(x==300&amp;&amp;y==300){
          g.drawString("Origin(0,0)", 310, 314);
      }
      g.drawString("Select Graphs", 710, 100);
      g.drawLine(300, 30, 300, 600);
      g.drawLine(30,300,600,300);
      if(x&gt;599||y&lt;40){
          g.drawString((String) cb.getSelectedItem(), 200, 200);
          s= String.valueOf(cb.getSelectedItem());
          se = String.valueOf( cb1.getSelectedItem());
          x=30;
          y=300;
  
      }                        
      if(s.equals("parabola")&amp;&amp; se.equals("Draw graph")){
          g.setColor(Color.GREEN);
          run1(); // function to set x and y values  
              }
      //Other checks to find the type of graph selected
          else{
          g.setColor(Color.white);
          run();
      }
      g.fillOval(x, y, 3, 3);
      repaint(); // When I run this code, the window keeps flickering. I think it is because this method called without any check.
                  //However I don't know much about this method
  
  }
  
  public void run(){
      try{
          Thread.sleep(1);
          if(x&lt;600&amp;&amp;y&gt;30&amp;&amp;y!=600){
               ax = x-300;
               by = y-300;
                    ax++;
  
                   by = (int) (40*(1+1*Math.cos(.2*ax/3.14))*Math.cos(ax/3.14)+40*(40*Math.sin(.2*ax/3.14))/ax); // AM+sinc(x) function
              x=300+ax;
              y=300-by;
  
          }
  
      }catch(Exception e){
          System.out.println("ERROR");
      }
  }
  
  public static void main(String[] args){
      new GraphApp();
      Thread t1 = new Thread();
               t1.start();
  }
  </code></pre>
  
  <p>}</p>
  
  <p>When I run this code, no graph gets drawn. Also, when I change selection in JComboBox no change is detected. Please help me what am I missing to grab here. </p>