00001 package jpl.util;
00002
00003 import java.awt.BorderLayout;
00004 import java.awt.event.ActionEvent;
00005 import java.awt.event.ActionListener;
00006 import javax.swing.JFrame;
00007 import javax.swing.JPanel;
00008 import javax.swing.UIManager;
00009
00010 public class SwingGadget2 extends JFrame
00011 {
00012 private static final long serialVersionUID = 1L;
00013 private Qev head;
00014 private Qev tail;
00015 public JPanel pane;
00016
00017 public ActionListener al =
00018 new ActionListener()
00019 {
00020 public void actionPerformed(ActionEvent e)
00021 {
00022 inc(e);
00023 }
00024 };
00025
00026 public SwingGadget2(String caption)
00027 {
00028 super(caption);
00029 try {
00030 UIManager.setLookAndFeel(
00031 UIManager.getSystemLookAndFeelClassName()
00032 );
00033 }
00034 catch (Exception e)
00035 {
00036 }
00037 pane = new JPanel();
00038 getContentPane().add(pane, BorderLayout.CENTER);
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 pack();
00050 setVisible(true);
00051 }
00052
00053 public synchronized void inc(Object e)
00054 {
00055 if ( head == null )
00056 {
00057 head = new Qev(e);
00058 head.next = null;
00059 tail = head;
00060 }
00061 else
00062 {
00063 tail.next = new Qev(e);
00064 tail = tail.next;
00065 }
00066 notifyAll();
00067 }
00068
00069 public synchronized Object dec()
00070 {
00071 Qev t;
00072
00073 try {
00074 while ( head == null )
00075 {
00076 wait();
00077 }
00078 t = head;
00079 head = head.next;
00080 return t.ev;
00081 }
00082 catch ( InterruptedException e )
00083 {
00084 return null;
00085 }
00086 }
00087
00088 public class Qev
00089 {
00090 public Object ev;
00091 public Qev next;
00092
00093 public Qev(Object e)
00094 {
00095 ev = e;
00096 }
00097 }
00098 }
00099
00100
00101