CustomEventPanel.java Source code

Java tutorial

Introduction

Here is the source code for CustomEventPanel.java

Source

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);
    }
}