การทำงานของ 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 ทั้งหมดที่รวมไว้กลับไป
ดังภาพคะ
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);
ผลลัพธ์
ไม่มีความคิดเห็น:
แสดงความคิดเห็น