كود لتطبيق بلغة 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



وشكرا