Dibujando la fórmula cuadrática con deslizadores en un JPanel

Por lo tanto, estoy tratando de crear un programa donde se pueda ingresar la fórmula cuadrática (ax ^ 2 + bx + c) a través de los controles deslizantes. Luego, dibuja un gráfico a medida que ajusta para A, B y C.

Cuestiones:

Quiero que las cosas que escribí en súper pintura y los controles deslizantes estén en un solo lugar. Los controles deslizantes están en su lugar cuando lo ejecuto. Hay espacio con el fondo correcto donde quiero mi gráfico en el panel pero no el gráfico real.

Aquí está mi clase de conductor:

import java.awt.*;
import javax.swing.*;

public class quadraticslider
{

     public static void main (String[] args)
   {
      JFrame frame = new JFrame ("Quadratic Slider");
      frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

      frame.getContentPane().add(new pp109quadraticpanel());

      frame.pack();
      frame.setVisible(true);
   }
}

Aquí está la clase de panel:

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

public class quadraticpanel extends JPanel
{
   private JPanel controls, graphPanel;
   private JSlider ASlider, BSlider, CSlider;
   private JLabel ALabel, BLabel, CLabel;
   double A, B, C, x,Y;

  //
  //SLIDERS YO
  //
   public quadraticpanel()
   {
      ASlider = new JSlider (JSlider.HORIZONTAL, 0, 255, 0);
      ASlider.setMajorTickSpacing (50);
      ASlider.setMinorTickSpacing (10);
      ASlider.setPaintTicks (true);
      ASlider.setPaintLabels (true);
      ASlider.setAlignmentX (Component.LEFT_ALIGNMENT);

      BSlider = new JSlider (JSlider.HORIZONTAL, 0, 255, 0);
      BSlider.setMajorTickSpacing (50);
      BSlider.setMinorTickSpacing (10);
      BSlider.setPaintTicks (true);
      BSlider.setPaintLabels (true);
      BSlider.setAlignmentX (Component.LEFT_ALIGNMENT);

      CSlider = new JSlider (JSlider.HORIZONTAL, 0, 255, 0);
      CSlider.setMajorTickSpacing (50);
      CSlider.setMinorTickSpacing (10);
      CSlider.setPaintTicks (true);
      CSlider.setPaintLabels (true);
      CSlider.setAlignmentX (Component.LEFT_ALIGNMENT);

      SliderListener listener = new SliderListener();
      ASlider.addChangeListener (listener);
      BSlider.addChangeListener (listener);
      CSlider.addChangeListener (listener);


      ALabel = new JLabel ("a: 0");
      ALabel.setAlignmentX (Component.LEFT_ALIGNMENT);
      BLabel = new JLabel ("b: 0");
      BLabel.setAlignmentX (Component.LEFT_ALIGNMENT);
      CLabel = new JLabel ("c: 0");
      CLabel.setAlignmentX (Component.LEFT_ALIGNMENT);
      controls = new JPanel();
      BoxLayout layout = new BoxLayout (controls, BoxLayout.Y_AXIS);
      controls.setLayout (layout);
      controls.add (ALabel);
      controls.add (ASlider);
      controls.add (Box.createRigidArea (new Dimension (0, 20)));
      controls.add (BLabel);
      controls.add (BSlider);
      controls.add (Box.createRigidArea (new Dimension (0, 20)));
      controls.add (CLabel);
      controls.add (CSlider);



      graphPanel = new JPanel();
      graphPanel.setPreferredSize (new Dimension (500, 500));
      graphPanel.setBackground (Color.white);

      add (controls); 
      add (graphPanel);




   }   

    //Here I'm taking the equation, running it through -10 to 10
    //It takes the doubles from the equation, converts
    //it to int then draws the quadratic formula in dots.

     public void paintComponent(Graphics page)
   {  

     super.paintComponent (page);

     for ( x=-10; x <= 10; x++)
     {
         Y = (A*(Math.pow(x,2)))+(B*x)+(C);
         int g = (int)Math.round(x);
         int h = (int)Math.round(Y);
         page.setColor (Color.black);
          page.fillOval (g, h, 1, 1);
      }


    }


   public class SliderListener implements ChangeListener
   {
///
///Reads the user input via slider.
///

      public void stateChanged (ChangeEvent event)
      {
         A = ASlider.getValue();
         B = BSlider.getValue();
         C = CSlider.getValue();

         ALabel.setText ("a: " + A);
         BLabel.setText ("b: " + B);
         CLabel.setText ("c: " + C);

      }
   }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta