Convertendo código de APPLET para JFRAME

olá… será quem alguem pode me dar umas dicas de como eu posso transfomar o codigo abaixo… de applet para Jframe???

ou melhor… se alguem puder me dar umas dicas de como utilizar um timer
em um Jframe… eu jah li o topico da sun e o exemplo do jProgressBar mas na hora de fzr o prog no NetBeans as coisas naum deram muito certo como eu esperava…

vlw@!

import java.applet.;
import java.awt.
;
import java.util.;
import java.text.
;
public class Clock1 extends Applet implements Runnable {
int width, height;
Thread t = null;
boolean threadSuspended;
int hours=0, minutes=0, seconds=0;
String timeString = “”;

//variavel de inicio da contagem dos segundos
int inicio=0;
//vetor de gravacao dos valores(dados) lidos
int[] gravacao = new int[120];

public void init() {
width = getSize().width;
height = getSize().height;
setBackground( Color.black );
}
public void start() {
if ( t == null ) {
t = new Thread( this );
t.setPriority( Thread.MIN_PRIORITY );
threadSuspended = false;
t.start();
}
else {
if ( threadSuspended ) {
threadSuspended = false;
synchronized( this ) {
notify();
}
}
}
}
public void stop() {
threadSuspended = true;
}
public void run() {
try {
while (true) {
// Here’s where the thread does some work
Calendar cal = Calendar.getInstance();
hours = cal.get( Calendar.HOUR_OF_DAY );
if ( hours > 12 ) hours -= 12;
minutes = cal.get( Calendar.MINUTE );
seconds = cal.get( Calendar.SECOND );
SimpleDateFormat formatter
= new SimpleDateFormat( “hh:mm:ss”, Locale.getDefault() );
Date date = cal.getTime();
timeString = formatter.format( date );
// Now the thread checks to see if it should suspend itself
if ( threadSuspended ) {
synchronized( this ) {
while ( threadSuspended ) {
wait();
}
}
}
repaint();
if (inicio<120){
inicio++;
gravacao[inicio] = seconds;
}

        t.sleep( 1000 );  // interval given in milliseconds 
     } 
  } 
  catch (InterruptedException e) { } 

}
void drawHand( double angle, int radius, Graphics g ) {
angle -= 0.5 * Math.PI;
int x = (int)( radiusMath.cos(angle) );
int y = (int)( radius
Math.sin(angle) );
g.drawLine( width/2, height/2, width/2 + x, height/2 + y );
}
void drawWedge( double angle, int radius, Graphics g ) {
angle -= 0.5 * Math.PI;
int x = (int)( radiusMath.cos(angle) );
int y = (int)( radius
Math.sin(angle) );
angle += 2Math.PI/3;
int x2 = (int)( 5
Math.cos(angle) );
int y2 = (int)( 5Math.sin(angle) );
angle += 2
Math.PI/3;
int x3 = (int)( 5Math.cos(angle) );
int y3 = (int)( 5
Math.sin(angle) );
g.drawLine( width/2+x2, height/2+y2, width/2 + x, height/2 + y );
g.drawLine( width/2+x3, height/2+y3, width/2 + x, height/2 + y );
g.drawLine( width/2+x2, height/2+y2, width/2 + x3, height/2 + y3 );
}
public void paint( Graphics g ) {
g.setColor( Color.green );
/drawWedge( 2Math.PI * hours / 12, width/5, g );
drawWedge( 2Math.PI * minutes / 60, width/3, g );
drawHand( 2
Math.PI * seconds / 60, width/2, g );*/

  //Desenhando o vetor 
  for(int j=1;j< inicio;j++){ 
   g.drawLine( 50+j,100-gravacao[j-1],51+j,100-gravacao[j]); 
  } 
   
   
  g.setColor( Color.white ); 
  g.drawString( timeString, 10, height-10 ); 

}
}

public static void main(String args[]){
JFrame frame=new JFrame();
Clock1 cloke=new Clock1();
frame.getContentPane().add(cloke);
cloke.init();
cloke.start();
frame.setSize(500,600);
frame.show();
}
basta adicionar esse metodo o valor no laço while threadSuspended esta incorreto pode nao fucionar adicione o sinal ! threadSuspended para que fucione;