I want the window remains open and the graph continues to emerge each time the coordinates is calculated the first step: the window opens and there's just ordinate and abscissa. the second stage: once the factorial function computes factorial (k = 2) then the window displays the graph (k = 1, fact (k = 1) = 1) (k = 2, fact (k = 2) = 2) (the line) (as it did the update to the window and it displays the line and the window remains open after the factorial function computes factorial (k = 3) while the window displays the graph (k = 2, fact (k = 2) = 2) (k = 3, fact (k = 3) = 6) (line) ex ..


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

public class GraphingData11 extends JPanel {
final int PAD = 20;
/*3 variables to draw the line
(k = 1, fact (k = 1) = 1) (k = 2, fact (k = 2) = 2)*/


static int multi;static int multi1;static int k;

/*factorial function*/
public static double factorial(int N){for (int i = 1; i <= N; i++){multi = multi*i;}return multi;}

/*a function that calculates the factorial of k = 1 to 100, and I draw the graph
for each k*/

public static double FUNCTION(){
int k=1;multi1=0;
while (k<=100){factorial(k);

/*can not with the method paintComponent (Graphics g)
paintComponent (Graphics g) I want to call the paintComponent (Graphics g) each time with new cords (k = 1, fact (k = 1) = 1) (k = 2, fact (k = 2) = 2 ) fact (k = 1) is variable and MULTI1 fact (k = 2) is the multi-variable
*/
multi1=multi;
k=k+1;}
return 0;}


//the function that draws the dots and lines
protected void paintComponent1(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASIN G,RenderingHints.VALUE_ANTIALIAS_ON);
int w = getWidth(); // Window Width
// Window height
int h = getHeight();

// draw axis.
g2.draw(new Line2D.Double(PAD, PAD, PAD, h-PAD));
// draw horizontal axis.
g2.draw(new Line2D.Double(PAD, h-PAD, w-PAD, h-PAD));
// line color
g2.setPaint(Color.red);
// draw the line
g2.draw(new Line2D.Double(PAD + (20*(k-1)),h - (PAD +multi1), PAD + (20*(k)), h - (PAD + multi)));
// color dot
g2.setPaint(Color.red);
// draw point
g2.fill(new Ellipse2D.Double(PAD +(20*(k-1)),h - (PAD + multi1),2,2));
}

public static void main(String[] args) {
FUNCTION();
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new GraphingData11());
f.setSize(400,400);
f.setLocation(200,200);
f.setVisible(true);
}
}


there is the repaint method but I do not know if it works or how it chews and thank you in advance......