Originariamente inviato da JunkyFunki
funziona alla perfezione ma non so come richiamarla da un altro file java e inserirla nel relativo frame
A dire il vero una Applet è-un Component, quindi in effetti potrebbe essere messa dentro un altro contenitore es. JFrame come un qualunque altro componente. Solo che poi che sei tu che dovresti far fare il "ciclo di vita" corretto alla applet. Nella applet postata, c'è solo start(), quindi è facile.
Ad ogni modo non ha molto senso cercare di mettere una applet dentro una applicazione. E se nella applet postata tecnicamente può essere semplice/utile farlo, con altre applet, in generale, potrebbe non esserlo affatto.
Ti suggerisco di non stare tanto a cercare di integrare una applet in una applicazione ma piuttosto di capire i concetti necessari per gestire una temporizzazione e la visualizzazione di una data/ora.
Ecco un esempio di "orologio" che ho scritto usando solo Swing e sfruttando il Timer di Swing. Come puoi vedere non ho usato né i Thread né il painting diretto su un Graphics.
codice:
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.Calendar;
import javax.swing.*;
public class ClockFrame extends JFrame
{
private JLabel clockLabel;
private DateFormat dateFormat;
private Timer timer;
private int second = -1;
public ClockFrame ()
{
super ("Clock");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (200, 100);
dateFormat = DateFormat.getTimeInstance ();
clockLabel = new JLabel ();
clockLabel.setFont (new Font ("SansSerif", Font.BOLD, 30));
clockLabel.setHorizontalAlignment (JLabel.CENTER);
add (clockLabel, BorderLayout.CENTER);
timer = new Timer (250, new ActionListener ()
{
public void actionPerformed (ActionEvent e)
{
Calendar c = Calendar.getInstance ();
if (c.get (Calendar.SECOND) != second)
{
String str = dateFormat.format (c.getTime ());
clockLabel.setText (str);
second = c.get (Calendar.SECOND);
}
}
});
timer.start ();
}
public static void main (String[] args)
{
SwingUtilities.invokeLater (new Runnable ()
{
public void run ()
{
ClockFrame frame = new ClockFrame ();
frame.setVisible (true);
}
});
}
}