import java.awt.AWTEvent;
import java.awt.Component;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.EventListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
public class CustomEventPanel extends JPanel implements TimerListener {
private int currentValue = 10;
JProgressBar bar = new JProgressBar(1,100);
public CustomEventPanel() {
TimerComponent t = new TimerComponent(1000);
t.addTimerListener(this);
add(bar);
}
public void timeElapsed(TimerEvent evt) {
currentValue += 10;
bar.setValue(currentValue);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Customized Event");
frame.setSize(300, 80);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane = frame.getContentPane();
contentPane.add(new CustomEventPanel());
frame.show();
}
}
interface TimerListener extends EventListener {
public void timeElapsed(TimerEvent evt);
}
class TimerComponent extends Component implements Runnable {
private int interval;
private TimerListener listener;
private static EventQueue evtq;
public TimerComponent(int i) {
interval = i;
Thread t = new Thread(this);
t.start();
evtq = Toolkit.getDefaultToolkit().getSystemEventQueue();
enableEvents(0);
}
public void addTimerListener(TimerListener l) {
listener = l;
}
public void run() {
while (true) {
try {
Thread.sleep(interval);
} catch (InterruptedException e) {
}
TimerEvent te = new TimerEvent(this);
evtq.postEvent(te);
}
}
public void processEvent(AWTEvent evt) {
if (evt instanceof TimerEvent) {
if (listener != null)
listener.timeElapsed((TimerEvent) evt);
} else
super.processEvent(evt);
}
}
class TimerEvent extends AWTEvent {
public static final int TIMER_EVENT = AWTEvent.RESERVED_ID_MAX + 5555;
public TimerEvent(TimerComponent t) {
super(t, TIMER_EVENT);
}
}