عمل شريط تقدم ( Progress Bar ) يتقدم بتقدم أى عملية فى البرنامج مسابقة اليوم هى عبارة عن مسابقة بسيطة جدا .. وهى عمل شريط تقدم وكما تعلمون جميعا هو عنصر تحكم رسومي يستخدم لإظهار تقدم عملية موسَّعة ما على الحاسوب ، مثل عملية تنزيل ملف ، أو نقله أو تنصيب برنامج ما. في بعض الأحيان ، يترافق الرسم مع توضيح نصي لتقدم العملية ويكون كنسبة مئوية ( % ) .. المطلوب .. عمل شريط تقدم Progress Bar يتقدم بصفة مؤقتة كل ثانية لمدة 10 ثوان
.. حل المسابقة البرمجية .. كود: 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); } }