solo che non puoi aggiungere qualcosa al JFrame
si che posso..ti posto il codice, di come l'avrei fatto io:

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

// Il contatore viene incrementato o decrementato
// a seconda del valore di runFlag
// Il bottone puo'  cambiare il valore di runFlag
// anche se il main sta eseguendo una computazione infinita

public class Contatore2b
{
	private static boolean runFlag = true;


	public static void main(String[] argv)
	{	JButton onOff = new JButton("ON-OFF");
	  	JLabel t = new JLabel();
	 	JFrame f = new JFrame();
	 	int count = 0;

		//Container cp = f.getContentPane();
		//cp.setLayout(new FlowLayout());
		onOff.addActionListener(new ActionListener()
			{	public void actionPerformed(ActionEvent e)
				{	runFlag = !runFlag;
				}
			});

	    JPanel jp = new JPanel();
	    f.add(jp);
		jp.add(onOff);
		jp.add(t);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.pack();
      f.setVisible(true);

		// il main entra in un ciclo infinito
      while (true)
		{	try
			{	Thread.sleep(100);
			} catch(InterruptedException e) {}
			if (runFlag) t.setText(Integer.toString(count++));
			else t.setText(Integer.toString(count--));
		}

	}
}
stò studiando sul: Core Java 2, ma cmq se mi dici che è una cosa che si usa la imparo, probabile, che ognuno poi acquisisca un certo stile e lo reiteri.