Lab user interface
เราต้องการเขียนโปรแกรมคำนวณเงินในธนาคารขึ้นมา
โดยเริ่มต้นให้หน้าจอออกมาแบบนี้ (ไม่ต้องเหมือนเป๊ะ ทำโดยการ setLayout
ให้ออกมาดูคล้ายๆกันก็ได้ จะได้เสร็จเร็วหน่อย)
Principal คือ เงินต้นที่ฝากธนาคาร
Interest Rate คือ อัตราดอกเบี้ย มีหน่วยเป็นเปอร์เซ็นต์
Years
คือ จำนวนปีที่ฝากธนาคาร (ตรงนี้ใช้ JSpinner เพื่อให้เลื่อนขึ้นลง
และจำกัดปี ให้อยู่ระหว่าง 1 ถึง 10 ปี เท่านั้น เลื่อนไปน้อยกว่า 1
หรือมากกว่า 10 ไม่ได้)
ตอนใช้งาน ผู้ใช้จะเติมข้อมูลลงไปในช่องที่ว่าง แล้วกด Calculate
- ถ้า
Principal หรือ Interest Rate มีค่าเป็นลบ หรือไม่ใช่ตัวเลข
หรือไม่มีค่าเลย ให้ pop หน้า warning Dialog
บอกว่าค่าที่ใส่อยู่ต้องเป็นตัวเลขที่เป็นค่าบวกเท่านั้น
แล้วเคลียร์ส่วนที่เป็นลบเพื่อให้ผู้ใช้งานเติมใหม่ (ดูคลาส JOptionPane สำหรับวิธีสร้าง pop up dialog)
- ถ้าไม่มีค่าไหนผิดปกติ ผลจะแสดงออกมาทาง JTextArea ด้านล่าง
จะเห็นว่า
เงินรวมในธนาคารในแต่ละปีจะถูกพิมพ์ออกมา แล้วมี scrollbar ด้วย โดย
scrollbar จะ scroll ไปบรรทัดสุดท้ายเอง
(แต่เราสามารถจับเลื่อนไปมาได้ตามใจ) เงินรวม ไม่ต้องแสดงเครื่องหมายดอลล่าร์เหมือนในภาพตัวอย่างก็ได้
- ถ้าเราลองใส่ค่าลงใน
JSpinner เลย แล้วกด Calculate ก็ได้เหมือนกัน แต่ต้องเป็นค่าระหว่าง 1
ถึง 10 เท่านั้น ถ้าเป็นค่าอื่นหรือดันเป็นคำอื่น ตัว JSpinner
รับค่านั้นไว้ได้ แต่จะเลื่อนขึ้นลงไม่ได้ (มีเสียงบี๊บเวลาพยายามเลื่อน)
ถ้าพยายามกด Calculate ในตอนที่ค่าไม่ถูกนี้ ค่าใน JSpinner
จะกลับมาเป็นค่าที่ใช้ได้ล่าสุด และโปรแกรมก็จะคำนวณไปตามปกติ
- นอกจากนี้ ถ้าเราไป focus ที่คอมโพเน้นท์ส่วนอื่น JSpinner ก็จะรีเซ็ตกลับมาเป็นค่าที่ใช้ได้ล่าสุดเหมือนกัน
จงเขียนโปรแกรมนี้ จากเริ่มต้นโดยไม่มีอะไรเลย
พอทำเสร็จแล้ว ทำเป็น executable jar (เดี๋ยวบอกวิธีทำให้ด้านล่าง) ส่งมาที่ progmethcp@gmail.com ภายในวันอังคารที่ 6 กันยายน
โดยในเมล์ subject ต้องเขียนเป็น <id>_GUI01
·
สำหรับแต่ละ .java
ไฟล์ ให้ขึ้นต้นไฟล์ด้วยข้อมูลของตน ดังนี้
/* รหัสนิสิต
* ชื่อ-นามสกุล
*หมายเลขห้อง
หมายเลขเครื่อง
*/
Export jar file ออกมาให้มีซอร์สโค้ดด้วย
ตั้งชื่อไฟล์เป็น <id>_GUI01.jar โดย <id> คือเลขประจำตัวนิสิต
ไกด์
- ตอนที่เรา
new JSpinner ขึ้นมา อาจต้องเรียกใช้ new SpinnerNumberModel( .. . .. ..
.) เป็นพารามิเตอร์ของ new JSpinner เพื่อเซ็ต range ของตัวเลขให้เรียบร้อย
- ในการสร้าง
scrollbar ของ JTextArea นั้น เราทำได้โดยการ สร้าง Text area object
ขึ้นมาให้เรียบร้อยก่อน แล้วจึงสร้าง JScrollPane โดยเอา JTextArea
มาเป็นพารามิเตอร์ของคอนสตรัคเตอร์มัน
- การดึงค่าจาก JSpinner ออกมา อาจต้องมีการแปลงค่านิดหน่อย
- สูตรการคำนวณเงิน คือ เงิน ณ ปี หนึ่งๆ = p(1+r)n
โดย p คือ เงินต้น r คืออัตราดอกเบี้ย หาร 100 แล้ว
ส่วน n คือ จำนวนปี ใช้ เมธอด Math.power คำนวณยกกำลังได้
- สตริงใน JTextArea นั้น มีแค่สตริงเดียวนะ ถ้าจะพิมพ์หลายๆบรรทัด ต้องใช้วิธีต่อสตริง ลองไปดูเมธอด append ของ JTextArea ดู
วิธีทำ executable jar (คือจาร์ไฟล์ที่ double click แล้วรันเลย)
- ขึ้นแรก Right Click ตัวโปรเจ็ค แล้วเลือก export ตาม pop up menu ที่โผล่ขึ้นมา
- จากนั้น เลือก jar ดังรูป
- กด Next ไป
- วินโดว์จะเปลี่ยนเป็นอีกหน้า
- ให้เลือกติ๊กถูกไฟล์ที่จะ export ทั้งหมด แล้วก็เลือก Export generated class files and resources ซึ่งนี่คือคำสั่งในการเอาคลาสไฟล์ใส่จาร์ เพื่อให้รันได้
- สำหรับการส่งงาน จะต้องเลือกติ๊ก Export java source files and resources ด้วย เพราะจะได้มีโค้ดติดมาให้อาจารย์ตรวจ
- เลือกที่ที่จะให้ jar ไฟล์ไปอยู่
- เลือก compress ไฟล์ได้ด้วย
- จากนั้นกด Next
- ถึงตรงนี้จะมีหน้าให้เลือก export files with compile warnings ก็เลือกซะ
- ตรง build project if not built automatically ก็ติ๊กไว้ด้วย
- จากนั้นกด Next
- ตอนนี้เราจะอยู่ในหน้า
JArR Manifest Specification นี่คือการกำหนด Manifest file
ซึ่งเป็นไฟล์ที่ตัวจาร์จะอ่านเวลาเราดับเบิ้ลคลิ๊ก โดยไฟล์นี้จะบอกจาร์ว่า
ต้องไปรันคลาสเมนของโปรแกรมที่ไหน
- เลือก Generate the manifest file
- จะ seal ก็ได้ แต่อันนี้ไม่เกี่ยวกับบทเรียน
- ด้านล่าง เราเลือกคลาสที่มีเมธอด main ได้จากการ Browse
- พอเลือก main class แล้วก็กด Finish