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

JavaBean ใน NetBeans(2)

จากตอนที่แล้วได้ทิ้งท้ายไว้จากการ import TickTock.jar
เข้าใน Netbeans ตามวิธีที่ได้กล่าวมาในตอนที่แล้ว จะได้
TickTock.jar อยู่ในหมวดของ Beans


จากนั้นให้เลือก Counter และคลิกเม้าส์ซ้ายค้างไว้ลาก Counter มาในพื้นที่ของ Frame

จะได้เป็นกรอบสี่เหลี่ยมเล็กๆ ให้ปรับขนาดให้เหมาะสม จะเห็นเลข 0 อยู่ในกรอบสี่เหลี่ยมดังรูป

ต่อไปเราจะทำการสร้างปุ่มเพื่อควบคุม Counter เราจะสร้างทั้งหมด 3 ปุ่มด้วยกันคือ
1. ปุ่ม Start เพื่อสั่งให้ Counter เริ่มนับ
2. ปุ่ม Stop เพื่อสั่งให้ Counter หยุดนับ
3. ปุ่ม Reset เพื่อ Reset Counter ให้ = 0 หรือเริ่มใหม่

วิธีการสร้างปุ่ม
ขั้นตอนแรกให้ดูที่หน้าต่าง Palatte ทางด้านขวา
ในหมวด Swing Controls จะมีคำสั่ง Button อยู่
ให้คลิกเม้าส์ซ้ายค้างไว้ลาก Button มาในพื้นที่ของ Frame จะได้ดังรูป
ให้เปลี่ยนชื่อปุ่มเป็น Start โดยคลิกขวาที่ปุ่ม เลือก Edit Text พิมพ์ Start จากนั้นให้สร้างปุ่ม Stop กับ Reset ในวิธีเดียวกันนี้
ขั้นตอนต่อไปเราจะกำหนด Event ให้กับปุ่มโดยจะสั่งว่า เมื่อคลิกปุ่ม Start,Stop,Reset
ให้ Counter ทำตามคำสั่งของปุ่มนั้น ซึ่งเราจะต้องเชื่อมปุ่ม 3 ปุ่มนี้ให้มีความสัมพันธ์กัน
กับ Counter ก่อน จะนำเสนอวิธีที่ง่ายดังนี้

ในโหมด Design ให้คลิก Connection Mode ซึ่งเป็น icon อยู่ในแถบเดียวกันกับโหมด Design
จากนั้นให้คลิกที่ปุ่ม Start จะขึ้นกรอบสีแดงรอบปุ่ม Start ดังรูปจากนั้นให้คลิกที่ Counter ใน Frame จะขึ้นหน้าต่าง Connection Wizard ดังรูป ให้เลือก mouse > mouse clicked จากนั้นคลิก Next >จากนั้นติ๊กเลือก Method Call และหา Method ที่ชื่อว่า start()คลิก Finish โปรแกรมจะสลับมาโหมด Source ให้โดยอัตโนมัติ และเห็นว่าเราได้เชื่อม
ปุ่ม Start กับ Counter เรียบร้อยแล้ว จะปรากฎ Code โปรแกรมดังนี้นี่คือเราได้เชื่อมปุ่มกับ Counter เรียบร้อยแล้ว

ให้เราสลับไปโหมด Design และทำวิธีการเดียวกันนี้กับ ปุ่ม Stop และ Reset
หากทำเสร็จเรียบร้อย Code ที่ได้จากการเชื่อมกันระหว่างปุ่ม กับ Counter จะได้ดังรูป
ในขั้นตอนต่อไปเราจะทำการเชื่อม Counter.jar กับ TickTock.jar เข้าด้วยกันดังนี้

ในหน้าต่าง Palatte หมวด Beans ให้เลือก TickTock คลิกเม้าส์ซ้ายค้างไว้แล้วลาก
TickTock เข้ามาในพื้นที่ Frame เรา

ในส่วนนี้เราจะไม่เห็นการเปลี่ยนแปลงใน Frame
แต่หากสังเกตหน้าต่าง Navigator ทางด้านซ้ายล่าง จะเห็นว่า ในหัวข้อ Other Components
จะมี tickTock1 [TickTock] อยู่ แสดงว่า เราได้เพิ่ม TickTock.jar
เข้ามาใน Frame เรียบร้อยแล้วต่อไปเราจะเชื่อม TickTock.jar เข้ากับ Counter.jar ดังนี้

ให้เลือก Connection Mode ดังที่กล่าวมาข้างต้น
จากนั้น ในหน้าต่าง Navigator ให้คลิก tickTock1 [TickTock] จะปรากฎแถบสีน้ำเงิน
แสดงว่าเลือกแล้ว
และคลิก counter1 [Counter] ในโหมดของ JFrame ในหน้าต่าง Navigator เช่นกัน
จะปรากฎหน้าต่าง Connection Wizardเลือก propertyChange ให้หัวข้อ PropertyChange จากนั้นคลิก Next
ติ๊กเลือก Method Call เลือก Method ที่มีชื่อว่า increment() จากนั้นคลิก Finishหาทำการเชื่อมสำเร็จ Code จะมีดังรูป
ต่อไปจะทำการ Set interval ให้ TickTock ดังนี้

คลิกเลือก tickTock1 [TickTock] ในหน้าต่าง Navigator สังเกตทางด้านขวา
หน้าต่าง Properties ในหัวข้อ interval ให้เปลี่ยนจากเลข 5 เป็นเลข 1ทำการ Run Program ในหน้าต่าง Project ด้านซ้ายบน
คลิกขวาที่ Clockframe เลือก Run file หรือกด Shift+F6 ที่คีย์บอร์ดก็ได้จะปรากฏหน้าต่างของโปรแกรม ดังรูปเท่านี้เราก็จะได้โปรแกรมที่เราต้องการโดยสามารถควบคุม event จากการคลิกเม้าส์ที่ปุ่มได้..

จากขั้นตอนที่ได้กล่าวมาแล้ว หวังว่าจะไม่ยากเกินไปสำหรับนักพัฒนามือใหม่นะคะ..
ในตอนต่อไปเราจะมาดูกันว่าเราสามารถประยุกต์ใช้ JavaBean ในโปรแกรมอะไรได้อีกบ้าง
ติดตามตอนต่อไปค่ะ...

JavaBean ใน NetBeans

จากตอนที่แล้วได้สร้าง JavaBean ใน BeanBox กันมาแล้ว
ซึ่งเป็นวิธีที่ง่ายสำหรับผู้เริ่มต้น

วันนี้ขอนำเสนอการใช้ JavaBean อีกทางหนึ่งซึ่่งจะเพิ่มความซับซ้อนขึ้นมาอีกระดับหนึ่ง
แต่ก็ไม่ยากเกินไปสำหรับผู้เริ่มต้น นั่นคือ JavaBean ใน NetBeans ...

อันดับแรกให้เปิดโปรแกรม NetBeans ขึ้นมาก่อนนะคะ..
จากนั้น ให้ New Project ขึ้นมาใหม่
ในช่อง Project Name : ให้ตั้งชื่อว่า Clockbean

คลิก Finish เพื่อสร้าง Project ชื่อ Clockbean

จากนั้นเราจะทำการสร้าง JFrame Form โดยให้คลิกเม้าส์ขวาที่ Clockbean
จากนั้นลากไปที่ New ให้เลือก JFrame Form...

จะปรากฎหน้าต่าง New JFrame Form
ในช่อง Class Name : ให้ตั้งชื่อว่า Clockframe

คลิก Finish เพื่อสร้าง JFrame Form จะได้ Clockframe.java ที่ tab Project ดังนี้...

ในหน้าต่าง Work Area ในโหมด Design จะได้ Frame ดังนี้

จากนั้นเราจะ import ไฟล์ นามสกุล .jar เข้ามา นั่นคือ Counter.jar ในหัวข้อที่แล้ว
ย้อนกลับไปศึกษาได้ที่ http://component-based-tutorial.blogspot.com/2011/06/javabean1.html


เมื่อเตรียมไฟล์ Counter.jar เรียบร้อยแล้ว

ขั้นตอนนี้จะทำการ import Counter.jar เข้ามาใน Frame ของเรา

อันดับแรกให้อยู่ที่หน้า Work Area ในโหมด Design ให้สังเกตหน้าต่างทางด้านขวา
จะเห็น Palatte และ Properties

ในหน้าต่าง Palatte ให้เลื่อน Scroll Bar หาหัวข้อ Beans
จากนั้นคลิกขวาที่ Choose Bean เลือก Palatte Manager..


จะได้หน้าต่าง Palatte Manager ให้เลือก Beans


คลิก Add from JAR... จะได้หน้าต่าง Install Component to Palatte


ไปที่ Directory ที่ได้สร้าง file Counter.jar ไว้
จากนั้น คลิกเลือก Counter.jarและคลิก Next จะได้ Counter.jar อยู่ใน List


คลิกเลือก Counter จากนั้นคลิก Next > จะไป Step ที่ 3 ซึ่งให้เราเลือกว่า
จะเลือก file.jar นี้ไว้ที่หมวดไหน ให้เลือก Beans

จากนั้นคลิก Finish และหน้าต่าง Palatte Manager ยังค้างอยู่ให้คลิก Close ปิดไป
เราจะได้ Clock ที่ได้ import เข้ามาอยู่ในหมวด Beans แล้ว


และสิ่งที่เราต้องมีต่อไปคือ TickTock.jar เพื่อจะนำมาเชื่อมกับ Counter.jar ที่เราได้ import เข้ามา

ซึ่งในตอนนี้เราจะมีไฟล์ TickTock.java ซึ่งอยู่ใน Directory ที่เราได้ดาวน์โหลด BDK มา
ให้ตรวจดูว่ามีไฟล์หรือไม่ที่
bdk1_1>beans>demo>sunw>demo>misc>TickTock.java

จากนั้นให้ทำการสร้างไฟล์ TickTock.jar จากไฟล์ TickTock.java ตามวิธีที่ได้กล่าวมาแล้วข้างต้น( ศึกษาวิธีสร้างไฟล์ .jar จาก ไฟล์ .java คลิกที่ลิ้งค์นี้ http://component-based-tutorial.blogspot.com/2011/06/javabean1.html )


จากนั้นเมื่อได้ไฟล์ TickTock.jar เรียบร้อยแล้วก็จะนำ TickTock.jar import เข้ามาใน Netbeans ซึ่งสามารถใช้วิธีเดียวกับการ import Counter.jar เข้ามาใน Netbeans ซึ่งได้กล่าวไปแล้วข้างต้น



ในตอนต่อไปเราจะทำการเชื่อม TickTock.jar กับ Counter.jar และสร้างปุ่ม Start , Stop , Reset เพื่อควบคุม Counter กัน ติดตามตอนต่อไปได้เลยค่ะ ...


Package JAVA & Scope

  Java มีลักษณะเช่นเดียวกับโปรแกรมภาษาระดับสูงอื่นๆ คือ จะมี Class ย่อยที่เขียนขึ้นมาให้เรียกใช้ได้ทันที โดยไม่ต้องเขียนเองให้เสียเวลา Class เหล่านี้ถูกเรียกว่า Package ครับ

สำหรับขอบเขตของ class มีดังนี้

public , private , protected, static , void

1) public

ใช้สำหรับนิยามตัวแปร ,Method และ Class ใดๆ เพื่อที่จะให้สามารถนำไปใช้กับ Class อื่นๆ ได้
   สำหรับการนิยามตัวแปรของ public นั้นเราจะกำหนดตัวแปรเป็น public ในกรณีที่ตัวแปรนั้นทำหน้าที่เป็น public constant หรือในกรณีที่ class ทำหน้าที่ group หลาย ๆ ตัวแปรเข้าด้วยกัน
   สำหรับการกำหนด method แบบ public มีดังนี้
กำหนดให้เป็น public ในกรณีที่ต้องการให้ class ใด ๆ สามารถเรียกใช้ได้ และสามารถเรียกใช้จากภายใน class เองได้ และ subclass ก็สามารถทำการ override ได้

2) private

private ใช้นิยามตัวแปร หรือ Method เพื่อให้เรียกใช้ได้เฉพาะภายใน Class ที่สร้างตัวแปร หรือ Method นั้นๆ ขึ้นมาเท่านั้นครับ

สำหรับการนิยามตัวแปรของ private มีจุดประสงค์คือ

1. ตัวแปรมักเป็นส่วนหนึ่งของ implementation ภายในของ class ซึ่งอาจมีการเปลี่ยนแปลงภายหลังได้ ซึ่งถ้ายอมให้ class อื่นมีการเข้าถึงได้โดยตรงแล้ว เมื่อมีการเปลี่ยนแปลง อย่างเช่น เปลี่ยนชื่อตัวแปรก็จะมีผลกระทบกับ class ที่มาเรียกใช้นั้น

2. class ที่ประกาศ ตัวแปรนี้เป็น เป็นเพียง class เดียวเท่านั้น ที่รู้ว่าค่าของตัวแปรนี้ควรจะเป็นอะไรได้บ้าง การที่ยอมให้ class อื่นมาเปลี่ยนค่าได้โดยตรง จะทำให้ค่าของ ตัวแปรนี้ไม่ถูกต้อง การทำให้เป็น private แล้วมี get/set method ไว้ให้เรียกใช้ จะทำให้เราสามารถเขียน code ที่จะกำหนดค่าที่เป็นไปได้ของ ตัวแปรตัวนี้ได้ นอกจากนี้เรายังสามารถใช้ method get/set เป็นตัวกำหนดระดับที่ยอมให้เข้าถึงตัวแปรได้ อย่างเช่น ถ้ามีเพียง get method ก็หมายความว่ายอมให้อ่านได้เท่านั้น ถ้ามีเพียง set method ก็หมายความว่า set ค่าได้เท่านั้น

3) Protected

protected ใช้นิยามตัวแปร หรือ Method ที่ใช้ได้เฉพาะ Class ที่สร้างขึ้นมาด้วยวิธีการสืบทอด (Inheritance) เท่านั้นโดยปกติจะใช้ protected กับ Class ที่เป็น Class ต้นฉบับ

สำหรับการนิยามตัวแปรของ Protected ใช้เมื่อ เราต้องการให้ subclass สามารถเรียกใช้ ตัวแปรนี้ได้โดยตรง

สำหรับการกำหนด method แบบ Protected มีดังนี้
กำหนดให้เป็น protected ในกรณีที่ไม่ต้องการให้ class อื่นเรียกใช้ และต้องการใช้ภายใน class นั้น และที่สำคัญคือยอมให้ subclass สามารถเปลี่ยนหรือเลือกไม่ใช้ implementation ของ method นี้ได้ โดยการทำ overriding

4) static

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


5) void

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


>>>มีรูปตารางมาฝากกันครับเพื่อจะได้เข้าใจถึงระดับการเข้าถึงครับบ<<<