import javax.swing.*; import java.awt.Font; import java.awt.Color; import java.awt.Graphics; import java.awt.BorderLayout; import java.awt.Dimension; import java.util.*; import java.text.DateFormat; // Adaptación de la clase de repaso de Java, 2d, p. 333 public class SimpleClock extends javax.swing.JPanel implements Runnable { private Font clockFont = new Font( "SansSerif", Font.BOLD, 24 ); private Thread clockThread = null; private int xPos = 40; private int yPos = 50; private DateFormat df; public SimpleClock() { df = DateFormat.getTimeInstance(); setBorder( BorderFactory.createLineBorder( Color.black, 2 ) ); setFont( clockFont ); setForeground( Color.red ); setPreferredSize( new Dimension( 200, 100 )); clockThread = new Thread( this, "Clock" ); clockThread.start(); } public void paintComponent( Graphics g ) { super.paintComponent( g ); Date date = Calendar.getInstance().getTime(); String time = df.format( date ); g.drawString( time, xPos, yPos ); } public void run() { while ( true ) { repaint(); try { Thread.sleep( 1000 ); } catch (InterruptedException e ) {} } } public static void main( String [] args ) { JFrame frame = new JFrame( "SimpleClock" ); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); SimpleClock theClock = new SimpleClock(); frame.getContentPane().add( theClock, BorderLayout.CENTER ); frame.pack(); frame.setVisible( true ); } }