วันจันทร์ที่ 5 กันยายน พ.ศ. 2554

รายละเอียดโปรแกรม Mouseevent2

Mouseevent2

การทำงานของ Mouseevent และ Mouseevent2 จะเหมือนกัน
แต่ ในส่วนของ Mouseevent2 จะมี flie เพิ่มเข้ามาสอง fileด้วยกัน คือ

MouseReceiver2BeanInfo.java
MouseSource2BeanInfo.java

2 file นี้เป็นตัวที่จะทำให้ เราซ่อน Properties ของ Bean ที่เราไม่ต้องการได้คะ

>> MouseSource2BeanInfo.java <<

package mouseevents2;
import java.beans.*;
import java.awt.event.*;
import java.lang.reflect.*;

public class MouseSource2BeanInfo extends SimpleBeanInfo {

  public PropertyDescriptor[] getPropertyDescriptors() {
    PropertyDescriptor pds[] = {  };
    return pds;
  }

  public EventSetDescriptor[] getEventSetDescriptors() {
    try {
      EventSetDescriptor esd1, esd2;
      String mnames[] = { "mouseClicked", "mouseEntered",
        "mouseExited", "mousePressed", "mouseReleased" };
      esd1 = new EventSetDescriptor(MouseSource2.class,
        "mouse", MouseListener.class, mnames,
        "addMouseListener", "removeMouseListener");
      String mmnames[] = { "mouseDragged", "mouseMoved" };
      esd2 = new EventSetDescriptor(MouseSource2.class,
        "mouseMotion", MouseMotionListener.class, mmnames,
        "addMouseMotionListener", "removeMouseMotionListener");
      EventSetDescriptor esd[] = { esd1, esd2 };
      return esd;
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }

  public MethodDescriptor[] getMethodDescriptors() {
    MethodDescriptor mds[] = {  };
    return mds;
  }
}

เห็นได้ว่า จากCode จะทำการกำหนด Event ที่ต้องการให้ Bean แสดงในส่วนของ Method public EventSetDescriptor[] getEventSetDescriptors() เป็นการสร้าง array ของ String และ new object ชื่อ EventSetDescriptor และตั้งชื่อว่า esd1 และ esd2
และทำการสร้าง EventSetDescriptor esd[] = { esd1, esd2 }; และทำการ returnค่า esd ทั้งหมดที่รวมไว้กลับไป
ดังภาพคะ


>> MouseReceiver2BeanInfo <<


package mouseevents2;
import java.beans.*;
import java.awt.event.*;
import java.lang.reflect.*;

public class MouseReceiver2BeanInfo extends SimpleBeanInfo {

  public PropertyDescriptor[] getPropertyDescriptors() {
    PropertyDescriptor pds[] = {  };
    return pds;
  }

  public EventSetDescriptor[] getEventSetDescriptors() {
    EventSetDescriptor esds[] = {  };
    return esds;
  }

  public MethodDescriptor[] getMethodDescriptors() {
    try {
      Class c = MouseReceiver2.class;
      Class pTypes[] = new Class[1];
      pTypes[0] = MouseEvent.class;
      Method method1 = c.getMethod("mouseClicked", pTypes);
      Method method2 = c.getMethod("mouseEntered", pTypes);
      Method method3 = c.getMethod("mouseExited", pTypes);
      Method method4 = c.getMethod("mousePressed", pTypes);
      Method method5 = c.getMethod("mouseReleased", pTypes);
      Method method6 = c.getMethod("mouseDragged", pTypes);
      Method method7 = c.getMethod("mouseMoved", pTypes);
      ParameterDescriptor pds[] = new ParameterDescriptor[1];
      pds[0] = new ParameterDescriptor();
      MethodDescriptor md1 = new MethodDescriptor(method1, pds);
      MethodDescriptor md2 = new MethodDescriptor(method2, pds);
      MethodDescriptor md3 = new MethodDescriptor(method3, pds);
      MethodDescriptor md4 = new MethodDescriptor(method4, pds);
      MethodDescriptor md5 = new MethodDescriptor(method5, pds);
      MethodDescriptor md6 = new MethodDescriptor(method6, pds);
      MethodDescriptor md7 = new MethodDescriptor(method7, pds);
      MethodDescriptor mds[] = { md1, md2, md3, md4,
        md5, md6, md7 };
      return mds;
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
}

File นี้จะทำการซ่อน Event ที่เราไม่ต้องการทั้งหมดของ Bean
ใน method


public EventSetDescriptor[] getEventSetDescriptors() {
EventSetDescriptor esds[] = { };
return esds;
}

คือการ return esds เปล่าๆ กลับไปโดยไม่มีการสร้าง EventSetDescriptor 
ดังภาพ


ใน  MethodDescriptor[] getMethodDescriptors() 
เมื่อมีการให้ source ทำการสร้าง Event ให้กับ ตัวReceiver จะทำการแสดงข้อความที่เราเลือกไว้
เช่น

pTypes[0] = MouseEvent.class;
Method method7 = c.getMethod("mouseMoved", pTypes);

ผลลัพธ์


ไม่มีความคิดเห็น:

แสดงความคิดเห็น