วันพฤหัสบดีที่ 7 กรกฎาคม พ.ศ. 2554

JavaBeans บน Eclipse


              จากบทความที่แล้วที่เราแสดงตัวอย่างการใช้ JavaBeans บน NetBeans กันไปแล้ว ต่อไปในบทความนี้ เราจะนำเอา JavaBeans มาใช้บน Eclipse กันบ้างครับ ซึ่งเราจะใช้โปรแกรม Counter มาแสดงเป็นตัวอย่างเหมือนเดิม โดยก่อนอื่นเราต้องติดตั้ง plugin เสียก่อนจึงจะสามารถใช้งานได้เริ่มจาก
1. เข้าไปที่ http://www.eclipse.org/windowbuilder/download.php
2. เลือก link download ให้ตรงกับ version ของ Eclipse ที่ใช้
3. ไปที่ Eclipse เลือก Help->Install New Software…
4. ทำการ Add…->Archive… แล้วเลือกไฟล์ที่ download มาจากข้างต้น
5. เลือก Select All แล้วกด Next->Finish รอติดตั้งจนเสร็จ ทำการ Restart Eclipse


ตัวอย่างการใช้งาน
1. สร้าง Java Project ขึ้นมาใหม่

2. สร้าง JFrame Form ขึ้นมาใหม่ ชื่อ CounterForm โดยไปที่ File->New->Other… แล้วเลือก WindowBuilder->Swing Designer->JFrame

3. ไปที่หน้า Design คลิกขวาที่ Palette แล้วเลือก Palette Manager จะปรากฏหน้าต่างใหม่ขึ้นมา ให้เลือก Add Category… แล้วใส่ชื่อว่า Bean
4. ในหน้า Palette Manager เลือก Import jar… จะปรากฏหน้าต่างดังภาพ ให้เลือก Ignore… แล้วเลือก icon ในกรอบสีแดง แล้วเลือก FileSystem

5. ไปยัง Directoryที่ติดตั้ง BDK ไว้ เข้าไปที่ beans\jars แล้วเลือกไฟล์ button.jar เสร็จแล้วเลือก ExplicitButton และเลือกCategory เป็น Bean

6. ทำซ้ำข้อ 4 และ 5 อีก 2 ครั้ง โดยให้เลือกไฟล์ misc.jar และ Counter.jar โดยเลือก TickTock และ Counter ตามลำดับ

7. คลิกที่ Frame แล้วเลือก property Layout เป็น Absolute layout

8. กดปุ่ม F5 หนึ่งครั้ง เพื่อ Refresh หน้าจอ เสร็จแล้วจะปรากฏ Component ที่เราได้ทำการ import ลงไปข้างต้น ขึ้นมาให้ใช้งาน
9. เพิ่ม Component ลงไปใน Frame โดยใช้ Counter และ TickTock อย่างละอัน และใช้ ExplicitButton ทั้งหมด 3 อัน

10. คลิกที่ ExplicitButton อันแรก แล้วตั้งชื่อตัวแปรเป็น startButton ตั้ง Label เป็น Start

11. ทำซ้ำข้อ 10 อีก 2 ครั้งกับ ExplicitButton ที่เหลือ โดยตั้งชื่อตัวแปรเป็น stopButton กับ resetButton ตั้ง Label เป็น Stop กับ Reset ตามลำดับ

12. คลิกที่ TickTock แล้วตั้ง interval เป็น 1 และชื่อตัวแปรเป็น tickTock

13. คลิกที่ Counter แล้วตั้งชื่อตัวแปรเป็น counter
14. คลิกขวาที่ tickTock เลือก Add event handler->propertyChange->propertyChange

15. Eclipse จะทำการ gen method propertyChange มาให้ แล้วให้เราทำการเพิ่ม counter.increment(); ใน method นั้น แต่จะพบปัญหาคือ ตัว Counter ที่ Eclipse gen code ให้นั้นจะประกาศตัวแปรไว้แบบ Local ให้ทำการย้ายไปประกาศแบบ Global ดังภาพ

16. กลับไปที่หน้า Design คลิกขวาที่ startButton เลือก Add event handler ->action->actionPerformed แล้วให้เราทำการเพิ่ม counter.start(); ใน method นั้น

17. ทำข้อ 16 ซ้ำ 2 ครั้ง กับ stopButton และ resetButton โดยเพิ่ม counter.stop(); ลงใน method ActionPerformed ของปุ่ม stopButton และเพิ่ม counter.reset(); ลงใน method ActionPerformed ของปุ่ม resetButton

18. ทำการสั่ง run


เพียงเท่านี้ก็เสร็จแล้วครับ กับการพัฒนาโปรแกรมโดยใช้ JavaBeans บน Eclipse

วันศุกร์ที่ 1 กรกฎาคม พ.ศ. 2554

package ของ JAVA

Java Class Library (Package)
ในJavaจะมีClassย่อยต่างๆที่ถูกเขียนขึ้นมาเพื่อให้เรียกใช้ได้ทันที ไม่ต้องเสียเวลาเขียนเอง โดยสามารถเรียก Class ต่างๆเหล่านั้นขึ้นมาทำงานได้ตามแต่ละความสามารถของClassเลย หรือเรียกClassเหล่านี้ว่าLibrariesนั่นเอง ซึ่งก็เหมือนกับภาษาระดับสูงอื่นๆทั่วไปที่จะมีLibrariesของตัวเอง แต่ในJavaจะเรียกต่างกันคืออาจเรียกว่าเป็นPackageก็ได้ โดยในJavaก็จะมีPackageให้เลือกใช้งานหลากหลาย หรือบางทีสามารถนำPackageที่มีคนเขียนขึ้น หรือเรียกว่าไม่ได้อยู่ในLibrariesที่Javaเตรียมให้มาประยุกต์ใช้ในการเขียนโปรแกรมได้

Package scope (ขอบเขตของแพ็คเกจ)
หากต้องการให้ตัวแปรหรือmethodในclassของเราไม่ให้ผู้อื่นสามารถเข้าถึงตัวแปรหรือmethodของเราได้โดยตรงและเพื่อไม่ให้มันเป็นที่สาธารณะ เนื่องจากภายใต้การกำกับดูแลในการออกแบบของ Java จะไม่สามารถประกาศประกาศการเข้าถึงPackageโดยDefaultได้ สมาชิกคนอื่น ของแพคเกจจะสามารถมองเห็น แต่classภายนอกที่ไม่ได้สืบทอดจะไม่สามารถเรียกใช้ตัวแปรหรือMethodที่อยู่ในclassได้

Public scope
ใช้สำหรับตัวแปร ,Method และ Class ใดๆ ที่สามารถให้นำไปใช้กับ Class หรือ โปรแกรมอื่นๆ ได้



Private scope
ใช้สำหรับตัวแปร หรือ Method ที่ให้เรียกใช้ได้เฉพาะภายใน Class ที่สร้างตัวแปร หรือ Method นั้นๆ ขึ้นมาเท่านั้น
หากมีตัวแปรหรือMethodที่เราต้องการที่จะใช้ประกาศเป็นส่วนตัว แม้จะextends classของเราก็ไม่สามารถใช้งานได้ ถ้าใช้private method จะได้รับerror message โดยถ้าเราตั้งใจเลือกชื่อสำหรับprivate method ที่จะใช้งานแล้วโดย superclass ถ้ามีชื่อแตกต่างกัน superclass จะได้รับในแบบของsuperclass ส่วนเราจะได้รับในแบบของเรา MethodและFunctions จะทำงานนอก classได้ทันที กล่าวคือถ้าไม่ได้เป็นPrivate Methodทั้งหมด ที่กล่าวมานั้นใช้ั สำหรับตัวแปรPrivate
Private method จะไม่ทำอะไรที่ไม่คาดคิด และไม่สามารถเขียนแทนที่ ได้


Protected scope
ภายในคลาสก็จะมีตัวแปรหรือmethodอยู่ภายในคลาสของเรา ซึ่งเราไม่ต้องการให้ผู้อื่นมาขอใช้ได้โดยตรงในคลาสเรา ดังนั้นเราจะประกาศ Protected ไว้ข้างหน้า เมื่อมีคลาสอื่นมาextendคลาสเราก็สามารถนำตัวแปรหรือ method เหล่านี้ไปใช้งานได้ ถึงแม้ว่าจะไม่ได้อยู่ในแพคเกจเดียวกัน การนำไปใช้ก็มีข้อจำกัด
การใช้ Protected เมื่ออยู่ในแพคเกจเดียวกัน สามารถเข้าถึงกันได้แม้ว่าไม่ได้สืบทอดกันมา แต่ถ้าต่างแพคเกจ จะต้องอาศัยการสืบทอดมาช่วยในการทำงานในคลาสนั้น ซึ่งเปนการนำไปใช้งานที่แตกต่างของ Protected และ Package


static
คือการทำให้ตัวแปรและ Method ที่ต้องการมีค่าคงที่ สามารถนำไปใช้ได้กับทุกๆ ส่วนของ Class โดยค่านั้นจะไม่มีการเปลี่ยนแปลงไม่ว่ากรณีใดๆ


void
ใช้กับ Method โดยเป็นการกำหนดให้ไม่มีการส่งค่าใดๆ กลับมาให้กับ Method นี้ (ดังนั้นไม่ต้องใช้คำสั่ง return)