Thread con interfaccia Runnable

package orologio;

import java.awt.Color;
import java.awt.Font;
import java.util.GregorianCalendar;

import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class JOra extends JPanel implements Runnable {

	private Thread thread;
	private JLabel lblOra;
	private JCheckBox chkAttivo;

	public JOra() {
		setBackground(Color.YELLOW);

		lblOra = new JLabel("00:00:00");
		lblOra.setFont(new Font("Courier New", Font.BOLD, 79));
		add(lblOra);

		chkAttivo = new JCheckBox("Attivo");
		chkAttivo.setFont(new Font("Tahoma", Font.PLAIN, 23));
		chkAttivo.setOpaque(false);
		add(chkAttivo);

		thread = new Thread(this);
		thread.setDaemon(true);
		thread.start();
	}

	@Override
	public void run() {
		while (true) {
			if (chkAttivo.isSelected()) {
				GregorianCalendar lt = new GregorianCalendar();
				int ore = lt.get(lt.HOUR);
				int min = lt.get(lt.MINUTE);
				int sec = lt.get(lt.SECOND);
				lblOra.setText((ore < 10 ? "0" + ore : "" + ore) + ":"
						+ (min < 10 ? "0" + min : "" + min) + ":"
						+ (sec < 10 ? "0" + sec : "" + sec));
			}
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
			}
		}
	}

}