كود لتطبيق بلغة Java مهم جدا للمبرمجين
14-07-2009, 11:46 AM
أقدم لكم كود صغير لإنشاء Event وهذا بلغة Java
كود PHP:
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;public class CustomEventTest
{
public static void main(String[] args)
{
CustomEventFrame frame =new CustomEventFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}/**
*un cadre avec un panneau affichant des gouttesde pluie
**/
class CustomEventFrame extends JFrame
{
public CustomEventFrame()
{
setTitle("CustomEventTest");
setSize(WIDTH,HEIGHT);
//Ajouter un panneau au cadre
CustomEventPanel panel=new CustomEventPanel();
Container contentPane =getContentPane();
contentPane.add(panel);
}
public static final int WIDTH =300;
public static final int HEIGHT =200;
}
/**
*Un panneau affichant des gouttes de pluie
*/
class CustomEventPanel extends JPanel
{
public CustomEventPanel()
{
y=0;
circles=new ArrayList();
Timer t =new Timer(100);
TimerAction listener =new TimerAction();
t.addTimerListener(listener);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
//traduire l'origine pour simuler des gouttes de pluie
g2.translate(0,y);
//dessiner tous les cercles
for (int i=0;i<circles.size();i++)
g2.draw((Ellipse2D)circles.get(i));
}
private ArrayList circles;
private int y;
private class TimerAction implements TimerListener
{
public void timeElapsed(TimerEvent event)
{
if (getWidth() ==0) return;//panneau pas encore affiché
// ajouter un autre cercle
int x=generator.nextInt(getWidth());
Ellipse2D circle =new Ellipse2D.Double(x,-y,SIZE,SIZE);
circles.add(circle);
//décaler l'origine
y++;
repaint();
}
private Random generator =new Random();
private static final int SIZE=9;
}
}
/**
*Une classe d'évenment perssonalisé.
*/
class TimerEvent extends AWTEvent
{
public TimerEvent(Timer t){
super(t,TIMER_EVENT);
}
public static final int TIMER_EVENT=AWTEvent.RESERVED_ID_MAX+5555;
}
/**
*une interface écouteur d'évenment personalisé.
**/
interface TimerListener extends EventListener
{
public void timeElapsed(TimerEvent event);
}
/**
*Une classe Timer personnalisée qui est
*la source des événements du temporisateur.
**/
class Timer extends JComponent implements Runnable
{
public Timer (int i)
{
listenerList =new EventListenerList();
interval =i;
Thread t =new Thread (this);
t.start();
}
/**Ajouter un ecouteur de temporisateur
*@param listener L'écouteur à ajouter
**/
public void addTimerListener(TimerListener listener)
{
listenerList.add(TimerListener.class ,listener);
}
/**
*Supprime un écouteur de temporisateur
*@param listener L'ecouteur à supprimer
**/
public void removeTimerListener(TimerListener listener)
{
listenerList.remove(TimerListener.class,listener);
}
/**
*Envoie un nouvel événement temporisateur à
*chaque <code>interval</code>millième de seconde.
**/
public void run ()
{
while (true)
{
try {Thread.sleep(interval);}
catch(InterruptedException e){}
TimerEvent event =new TimerEvent(this);
EventQueue queue =Toolkit.getDefaultToolkit().getSystemEventQueue();
queue.postEvent(event);
}
}
public void processEvent(AWTEvent event)
{
if (event instanceof TimerEvent)
{
EventListener[] listeners =listenerList.getListeners(TimerListener.class);
for(int i =0;i<listeners.length;i++)
((TimerListener)listeners[i]).timeElapsed((TimerEvent)event);
}
else
super.processEvent(event);
}
private int interval;
private EventListenerList listeners;
}
أنا أنتظر إستفساراتكم أو أي أسئلة تطرح حول Java
وشكرا
من مواضيعي
0 التغذية: نصائح وحيل حول الأكل الصحي اهمالها قد يسبب لنا مشاكل صحية لا نعرف اين سببها؟
0 فوضى سينوفاك الصينية.. لقاح واحد و3 نتائج متضاربة
0 "نوع آخر مثير للقلق".. سلالات كورونا المتحورة تنتشر في 50 بلدا
0 إجراء تغييرات إيجابية: نصائح وحيل للتغذية السليمة ولتقوية الاعصاب
0 هل لديك وزن زائد؟ نستطيع مساعدتك
0 يؤثر نظامك الغذائي على صحتك: كيفية الحفاظ على التغذية الجيدة
0 فوضى سينوفاك الصينية.. لقاح واحد و3 نتائج متضاربة
0 "نوع آخر مثير للقلق".. سلالات كورونا المتحورة تنتشر في 50 بلدا
0 إجراء تغييرات إيجابية: نصائح وحيل للتغذية السليمة ولتقوية الاعصاب
0 هل لديك وزن زائد؟ نستطيع مساعدتك
0 يؤثر نظامك الغذائي على صحتك: كيفية الحفاظ على التغذية الجيدة