หน้าแรก
 การบ้าน
  C/C++ new
  Java new
  Windows Phone
  แจ้งเรื่องที่ต้องการ
 บทความ
  .NET
  Android
  Blackberry
  C++Builder
  Delphi
  Java
  Mobile
  Open Source
  Pocket PC
  Visual Basic
  Web
  Windows Phone
  Others
 แบบเรียนฟรี
  ASP
  ASP.NET Webmatrix
  C++
  eVB
  J2ME
  Java
  PHP
 ซอร์สโค้ด
  Android
  ASP
  C++
  VC++
  CGI-Perl
  Delphi
  Java
  jQuery
  PHP
  Visual Basic
  .NET
 บริการจากเรา
  เปิดท้าย... ขายโค้ด
  Freeware
  อัตราค่าโฆษณา
  รายชื่อลูกค้า
  สถิติผู้เข้าเว็บ
 ดาว์นโหลด
 ค้นหาข้อมูล
 กระดานสนทนา
  .NET
  C/C++
  Delphi
  Java
  Palm/PocketPC
  Visual Basic
  Web
  อื่นๆ
 กระดานงาน
 ลิงค์เว็บ
 เกี่ยวกับผม
 อัตราค่าโฆษณา
Social Network

Facebook  Twitter  YouTube
 New Article
 Webboard
 Freelanceboard
Freeware
โปรแกรมเบอร์ดี (BerDee)
โปรแกรมเบอร์ดี (Android)
เกมส์เป่ายิ้งฉุบ
เกมส์เป่ายิ้งฉุบ(Android)
WebcamMonitor
WebcamMonitor(Windows)
scSendMail
scSendMail(Windows)
MSN Caption
MSN Caption(Windows)
  Freelance comment
  ติดต่อสอบถามมาได้ตลอดนะ...
2015-07-29 13:35:58
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:33:54
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:32:51
  ติดต่อสอบถามเข้ามาได้นะ...
2014-01-06 12:47:38
  ถ้ายังหาคนสอนไม่ได้ ก็ลอ...
2013-07-06 01:04:37
  สนใจส่งขอบเขตมาคุยราคาก...
2013-03-24 18:54:20
  ถ้ายังไม่มีคนรับงานติดต...
2012-12-16 19:18:14
  สนใจคะ ติดต่อ 0905076277...
2012-11-12 11:07:46
  รับทำโปรเจ็คนักศึกษาหรื...
2012-10-29 03:10:46
  sukit_te34@hotmail.com...
2012-10-29 03:09:36
  Webboard comment
  เขียนโปรแกรมภาษาจาวา
1.โ...

2023-09-12 11:40:28
  ต้องลอง debug ดูเองครับ
ไล่...

2023-06-08 18:03:06
  ร้านค้าแห่งหนึ่ง จะต้องน...
2021-09-21 08:47:08
  จงเขียนโปรแกรมดำเนินการ...
2021-05-07 15:06:11
  จงเขียนโปรแกรมสำหรับคำน...
2021-03-09 14:21:45
  ขอดู...
2021-01-04 23:56:45
  ขอโค้ดเพื่อทำการเรียนกา...
2020-12-09 23:02:09
  แล้ว ?...
2020-12-09 10:56:34
  จ้า...
2020-10-18 16:53:21
  พอดีผมเหลื่อแค่ตัดสต๊อก...
2020-05-31 21:49:43
  Homework comment
  เขียนโปรแกรมเพื่อรับค่า...
2022-02-24 10:45:17
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  โจทย์การบ้าน c++ เขียนรูปแ...
2020-04-06 11:01:33
  แบบนี้ขอเป็น ภาษา php หน่อย...
2019-09-18 14:36:34
  ผมไม่อยากให้คุณได้คะแนน...
2019-04-27 01:29:07
  อาจารย์เขาบอกแนวข้อสอบม...
2019-04-27 00:44:29
  ขอสอบถามการเขียน c++ ครับ เ...
2018-04-02 12:19:21
  โค้ดตัวอย่างศึกษาให้เข้...
2017-11-26 14:50:05
  คำนวณค่าน้ำโดยรับค่ามิเ...
2017-11-20 23:15:26
  Article comment
  เท่าที่อ่าน error คือพื้นที่...
2022-03-23 13:56:48
  เรียน สอบถามปัญหา กับ อ.คร...
2022-01-24 17:39:49
  ต้องการ ให้เขียน โปรแกรม ...
2019-12-09 11:39:58
  รับเขียน arx จาก vc++ 2017 ล็อคโปร...
2019-09-19 09:48:09
  ทำการ register ไฟล์ที่ชื่อ mswinsck.oc...
2019-09-17 14:05:56
  ใน vb 6 ไม่มี component winsock เลยค่ะ ส...
2019-09-03 10:31:02
  รบกวนขอสอบถามหน่อยนะครั...
2019-03-04 05:31:04
  สามารถนำตัวหนังสือจากภา...
2018-12-25 08:54:32
  มีcode ของ VB ไหมค่ะ ถ้ามีรบกว...
2017-09-28 16:50:02
  น่าจะได้ครับ ไม่เคยลอง
...

2017-07-11 09:59:35
  9Mcode comment

Link Exchange

อัตราค่าโฆษณา
 
 J2ME (Java Micro Edition) Tutorial  

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

 J2ME (Java Micro Edition)
 
 

บทที่ 4 MIDP GUI Programming

 

บทที่ 4 MIDP GUI Programming

แนะนำ MIDP user interface

Nokia 's GUI
รูปที่ 22 แสดง User Interface ของหน้าจอรุ่นต่างๆของ Nokia

จากรูปที่ 22 จะเห็นได้ว่าในแต่ละรุ่นของ มือถือ Nokia จะมีความแตกต่างกัน ไม่ว่าจะเป็นเรื่องของขนาดจอ หรือ ตำแหน่งของ Control ต่างๆ ซึ่งทำให้ผู้ที่ต้องการพัฒนา โปรแกรมให้รองรับกับมือถือ หลายรุ่น เกิดความยุ่งยาก แต่ในความเป็นจริงแล้ว MIDP จะมีการทำงานในการจัดหน้าจอ ให้คุณโดยอัตโนมัติ ทำให้ผู้พัฒนา ไม่ต้องยุ่งยากในเรื่อง การจัดหน้าตา ของโปรแกรมมากนัก

สำหรับโครงสร้างของ MIDP user interface จะมีอยู่ใน Package ของ javax.microedition.lcdui ซึ่งภายใน Package จะประกอบด้วย

  • high-level API ,เป็นส่วนของ class ที่สืบทอดจาก class Screen ใช้สำหรับ การแสดงและเรียกใช้ class อื่นๆที่เป็น control ต่างๆ
  • low-level API ,เป็นส่วนของ class ที่สืบทอดจาก class Canvas หรือ Graphic ใช้สำหรับสร้าง control ที่มีลักษณะที่ นักพัฒนา ต้องการ

MIDP UI class hierarchy
รูปที่ 23 แสดง แผนผังโครงสร้าง Class ของ MIDP

คลาส Displayable เป็น class ที่สามารถแสดงออกที่หน้าจอ (Display) ได้ ซึ่งมีอยู่ 2 ชนิดคือ

  • Canvas ,เป็น Low-level object ที่ทำให้โปรแกรมสามารถแสดง Graphic และ จัดการการทำงาน กับคำสั่งจากผู้ใช้
  • Screen ,เป็น High-level object ทำหน้าที่ให้โปรแกรมสามารถแสดง control ต่างๆที่สืบทอด จาก class Screen ตัวอย่างเช่น class Alert, List, TextBox และ Form

ในเนื้อหาต่อไป เราก็จะมาทดลองเขียนโค้ด โดยนำเอา class ต่อละตัวมาทดลองใช้กัน แต่ก่อนอื่นก่อนใด เราก็จะทำการ ติดตั้งโปรแกรม Emulator สำหรับมือถือ ที่เราต้องการ ซึ่งในบทเรียนนี้ ผมจะเสนอ Nokia 7650 เป็นตัวอย่างหลักครับ

 

ติดตั้ง Nokia Series 60 MIDP SDK

ในการติดตั้งโปรแกรม Nokia Series 60 MIDP SDK คุณจำเป็นจะต้องสมัคร เป็นสมาชิกของ Nokia Forum แล้วค่อย Login เข้าสู่ระบบ แล้วเข้าไปที่ เมนู Tools and SDKs และทำการดาว์นโหลด Series 60 MIDP SDK 1.0 for Symbian OS, Nokia edition ดังรูป คุณจะได้ไฟล์ nS60_jme_sdk_v1_0.zip ,ให้คุณทำการคลี่ไฟล์ดังกล่าว แล้วทำการติดตั้ง

Download MIDP SDK
รูปที่ 24 แสดง link สำหรับการดาว์นโหลด Series 60
MIDP SDK 1.0 for Symbian OS, Nokia edition

สำหรับ Tools and SDKs ต่างๆที่อยู่ใน Nokia Forum นั้น มีอยู่มากมาย ที่ใช้ในการพัฒนา ซึ่งคุณอาจทดลอง ดาว์นโหลด มาใช้งานกันได้ แต่สำหรับขั้นตอนต่อไป ที่จะได้กล่าวถึงคือ การติดตั้งSeries 60 MIDP SDK ให้กับ J2ME Wireless Toolkits และ Sun ONE Studio 4 update 1, Mobile Edition ซึ่งในการติดตั้ง คุณจะเป็นจะต้องป้อน Username และ Password ของ Nokia Forum เพื่อจะขอ Serial Number จากทาง Nokia ผ่านทาง e-mail ที่เราได้ลงทะเบียนไว้ เมื่อเราได้รับ e-mail จากทาง Nokia แล้ว ก็ให้นำ Serial Number ที่ได้ มาใช้ในการติดตั้ง ในขั้นตอนต่อๆไป

Enter username and password
รูปที่ 25 แสดงหน้าต่างป้อน Account ของ Forum Nokia

Enter serial number
รูปที่ 26 แสดงหน้าต่างป้อน Serial Number

 

ติดตั้ง Nokia Series 60 MIDP SDK กับ J2ME Wireless Toolkits

เมื่อคุณได้ทำการติดตั้ง J2ME Wireless Toolkits ไว้เรียบร้อยแล้ว ดังที่เคยกล่าวถึงการติดตั้ง ไว้ในบทที่แล้ว
ขั้นตอนต่อมา จะเป็นการติดตั้ง Series 60 MIDP SDK 1.0 for Symbian OS, Nokia edition ต่อจากขั้นตอนที่ได้กล่าวไว้ข้างต้น

  • ทำการกำหนด path ของการติดตั้ง ให้เป็น <WTK_home>\wtklib\devices เช่น C:\WTK2\wtklib\devices ดังรูป

Choose an installation directory
รูปที่ 27 แสดงหน้าต่างป้อน path

  • จากนั้นก็คลิก Next แล้วทำการทำตามขั้นตอนการติดตั้งอื่นๆต่อไป
  • ทำการทดสอบ โดยเปิดโปรแกรม J2ME Wireless Toolkits, แล้วเลือก Open Project และเลือก โปรเจ็คที่ชื่อ Demo ,คุณจะเห็นได้ว่าได้มี Emulator เพิ่มขึ้นมา 1 รายการ ดังแสดงในรูปที่ 28 และเมื่อทดสอบ run จะมีผล ดังรูปที่ 29

WTK window
รูปที่ 28 แสดงหน้าต่าง WTK ที่มีการเพิ่ม Emulator ใหม่เข้าไป

Sample MIDlet
รูปที่ 29 แสดงหน้าต่าง Emulator ที่ run ตัวอย่างโปรเจ็ค

*** ข้อควรระวังอีกอย่างคือ ตัวอย่างโปรแกรมใน J2ME Wireless toolkits นั้น โดยมากจะกำหนดไว้ว่า รองรับกับ MIDP-2.0 ส่วน Series 60 SDK นี้ รองรับกับ MIDP-1.0 ทำให้ไม่สามารถ run บาง project ได้ คุณควรสังเกตุให้ดี

 

ติดตั้ง Nokia Series 60 MIDP SDK กับ Sun ONE Studio 4 update 1, Mobile Edition

เมื่อคุณได้ทำการติดตั้ง Sun ONE Studio 4 update 1, Mobile Edition ไว้เรียบร้อยแล้ว ดังที่เคยกล่าวถึงการติดตั้ง ไว้ในบทที่แล้ว
ขั้นตอนต่อมา จะเป็นการติดตั้ง Series 60 MIDP SDK 1.0 for Symbian OS, Nokia edition ต่อจากขั้นตอนที่ได้กล่าวไว้ข้างต้น

  • ให้คุณทำการติดตั้ง Series 60 MIDP SDK ไปตามขั้นตอน จนสิ้นสุดการติดตั้ง
  • ทำการเปิด โปรแกรม Sun ONE Studio 4 update 1, Mobile Edition ขึ้นมา แล้วให้ไปเลือกที่ แท็บ Runtime แล้วทำการคลิกขวาที่ Installed Emulators แล้วเลือก Add Emulator ดังรูปด้านล่าง

Add Emulator
รูปที่ 30 แสดงหน้าขั้นตอนการ เพิ่ม Emulator

  • ทำการ เลือก path ของ Emulator โดยในที่นี้จะเป็น C:\Nokia\Devices\Series_60_MIDP_SDK_for_Symbian_OS_v_1_0 (หากคุณติดตั้ง ตามค่า default ที่โปรแกรมให้มา) หลังจากนั้นจะปรากฏรายชื่อใหม่ของ Emulator ใน list รายการ, ให้คุณทำการคลิกเมาส์ขวา ที่ Emulator ใหม่ แล้วเลือก Set As Default ดังรูป

Set default emulator
รูปที่ 31 แสดงหน้าขั้นตอนการ กำหนด default Emulator

  • จากนั้นก็ให้ทดสอบการติดตั้ง โดยให้เลือกที่แท็บ Filesystems แล้วเลือก MIDletsuit ที่ต้องการ run, คลิกเมาส์ขวา แล้วเลือก Execute ดังรูป

Execute MIDletSuit
รูปที่ 32 แสดงหน้าขั้นตอนการ Execute MIDletSuit

  • ผลการ Execute จะได้ผลดังรูป

PushPuzzle Game
รูปที่ 33 แสดงหน้าต่าง Emulator ที่ run MIDletSuit

สำหรับการติดตั้ง Emulator ตัวอื่นๆ ก็เป็นในลักษณะเดียวกันนี้ ซึ่งคุณก็สามารถหา ดาว์นโหลดได้จาก Nokia Forum

แนะนำ: หากคุณต้องการพัฒนาโปรแกรม ให้สามารถรองรับ กับมือถือ Nokia หลายๆรุ่นๆ ผมขอแนะนำให้คุณใช้ Nokia Developer's Suite for the Java(TM) 2 Platform, Micro Edition, Version 2.0 for Windows ซึ่งเป็นเครื่องมือที่มีความสามารถต่างๆ ในการช่วยพัฒนาโปรแกรม

 

High-level class

เป็นส่วนของ class ที่สืบทอดจาก class Screen ใช้สำหรับ การแสดงและเรียกใช้ class อื่นๆ โดยมีรายละเอียด ดังนี้

  • Screen ,เป็น superclass (คลาสแม่) ของคลาสที่เป็น High-level class ทั้งหมด, Screen สามารถแสดง class ต่างๆได้ ซึ่งได้แก่ List, TextBox, Alert และ Form
  • Item subclasses, class ย่อยต่างๆ ที่สามารถบรรจุ อยู่บน Form ได้ ซึ่งได้แก่
    • StringItem ใช้แสดงข้อความ
    • ImageItem ใช้แสดงรูปภาพ
      • Constructor : ImageItem(String label, Image img, int layout, String altText)
    • TextField ใช้รับข้อความ
    • DateField ใช้แสดงวันเวลา
      • Constructor : DateField(String label, int mode)
      • Constructor : DateField(String label, int mode, TimeZone timeZone)
    • Gauge ใช้แสดงค่าเป็นกราฟฟิก
      • Constructor : Gauge(String label, boolean interactive, int maxValue, int initialValue)
    • ChoiceGroup ใช้แสดงข้อมูลให้เลือก
      • Constructor : ChoiceGroup(String label, int choiceType)
      • Constructor : ChoiceGroup(String label, int choiceType, String[] stringElements, Image[] imageElements)
      • ChoiceType: IMPLICIT, EXCLUSIVE, MULTIPLE
  • Command ,เป็นเมนูคำสั่งที่ คุณสามารถนำไปใส่ไว้ใน class ที่เป็น Displayable โดยอาศัย method ที่ชื่อ addCommand, Command จะเป็น control ที่มีไว้ให้ผู้ใช้เลือก เช่น ผู้ใช้เลือกเมนู Exit เพื่อออกจากโปรแกรม

Constructor : new Command(String label, int CommandType, int Priority)

label : ข้อความที่แสดงบน Command
CommandType : บอกถึงชนิดของเมนู ซึ่งได้แก่ BACK, CANCEL, EXIT, HELP, ITEM, SCREEN, OK, STOP
Priority : ลำดับความสำคัญของ เมนู

  • CommandListener ,จะทำงานร่วมกับ Command ซึ่งรอ Event (เหตุการณ์) ของ Command เมื่อมีการเลือก Command นั้นๆ โดยในการใช้งานจะอาศัย method setCommandListener เพื่อกำหนดว่า จะดัก รอ Event จาก class อะไร และมีข้อกำหนดว่า class นั้น จะต้องเรียก implements CommandListener พร้อมทั้งมี method CommandAction อยู่ใน class นั้น

public void CommandAction(Command c, Displayable d)

  • TextBox ,เป็นช่องกรอก, แก้ไข ข้อความ

Constructor : TextBox(String title, String text, int maxSize,int constrains)

title : หัวข้อของช่องกรอกข้อความ
text : ข้อความที่แสดง
maxSize : จำนวนข้อความสูงสุด
constraint : ลักษณะของข้อความ ซึ่งได้แก่ ANY, NUMBER, PASSWORD, PHONENUMBER, URL, EMAILADDR

  • Alert ,เป็นหน้าต่างแสดงข้อความ ใช้สำหรับรายงานการทำงาน ของโปรแกรม ให้ผู้ใช้ทราบ

    Constructor :

    • Alert(String title)
    • Alert(String title, String alertText, Image alertImage, AlertType alertType)

     

    AlertType: มีหลายชนิด ได้แก่ ALARM, CONFIRMATION, ERROR, INFO, WARNING
    สามารถทำให้แสดงเสียงได้โดยใช้ AlertType.playSound, กำหนดให้แสดงข้อความ ไม่จำกัดเวลา ได้โดยใช้ setTimeout(Alert.FOREVER)

  • Ticker, เป็นอักษรวิ่ง เพื่อบอกข้อมูลแก่ผู้ใช้

    Constructor :

    • Ticker(String title)

โครงสร้าง และการทำงานร่วมกับ Event ของ J2ME

สำหรับลักษณะการเขียนโค้ดของ J2ME จะอยู่ในลักษณะ ของการเขียน class สืบทอด ซึ่งจะมีโครงสร้าง ดังนี้

  
        import javax.microedition.midlet.*;
         
        public class HelloWorld extends MIDlet implements CommandListener, ItemStateListener  {
       
        public HelloWorld() {       
        }        
        
        public void startApp() {	  	
        }        
        
        public void pauseApp() {
        }
                
        public void destroyApp(boolean unconditional) {
        }
                
        public void commandAction(Command c, Displayable s) {        
        }


        public void itemStateChanged(Item item) {
        }
        
        }

แต่ละส่วนมีรายละเอียดดังนี้

  • import ใช้สำหรับเรียกใช้งาน API ต่างๆที่เกี่ยวข้อง
  • public class HelloWorld extends MIDlet implements CommandListener, ItemStateListener ,เป็นการประกาศชื่อคลาส ที่ชื่อ HelloWorld โดยสืบทอดจาก MIDlet และมีการ Implements 2 ส่วน คือส่วนของ
    • CommandListener ใช้สำหรับ การทำงานร่วมกับ Event ของ control ทั่วไป
    • ItemStateListener ใช้สำหรับ การทำงานร่วมกับ Event ของ control ที่เป็น items
  • public HelloWorld() จะมีการเรียกใช้เมื่อ มีการเรียกใช้โปรแกรม
  • public void startApp() จะมีการเรียกใช้เมื่อ มีการเริ่มต้นของโปรแกรม
  • public void pauseApp() จะมีการเรียกใช้เมื่อ มีการเรียกสั่งหยุดโปรแกรม
  • public void destroyApp(boolean unconditional) จะมีการเรียกใช้เมื่อ มีการทำลาย(ออกจาก)โปรแกรม
  • public void commandAction(Command c, Displayable s) จะมีการเรียกใช้เมื่อ มีการกระทำใดๆ กับ control ทั่วไป โดยจะต้องมีการเรียกใช้ setCommandListener เพื่อบอกกับระบบไว้ก่อน
  • public void itemStateChanged(Item item) จะมีการเรียกใช้เมื่อ มีการกระทำใดๆ กับ control ที่เป็น items โดยจะต้องมีการเรียกใช้ setItemStateListener เพื่อบอกกับระบบไว้ก่อน

ให้คุณ ทดสอบโค้ดต่างๆ ในภาคปฏิบัติ และสังเกตุโครงสร้าง คำสั่งการทำงานต่างๆ เพื่อเพิ่มความเข้าใจ

ในบทนี้ เราได้ให้ความรู้เกี่ยวกับ ลักษณะการทำงานของ MIDlet และการใช้งาน MIDlet Tool ในการพัฒนา MIDlet สำหรับในเนื้อหาต่อไป เราจะได้เริ่มกล่าวถึง ลักษณะ ของ GUI (Graphic User Interface) ของ MIDP

 

BACK

คลิปสอนเขียนโปรแกรม
เรียนเขียนโปรแกรมดอทเน็ต
เรียนเขียนโปรแกรมแอนดรอยด์
เรียนเขียนโปรแกรมเบล็คเบอร์รี่
เรียนเขียนโปรแกรมซี ซีพลัสพลัส
เรียนเขียนโปรแกรมจาวา
เรียนการใช้งานลินุกส์
เรียนการเขียนโปรแกรมวินโดว์โฟน
เรียนการเขียนโปรแกรมพีเฮชพี มายเอสคิวเอล
อัตราค่าโฆษณา
 
Tutorial
eVB Tutorial
ASP.NET Webmatrix Tutorial
J2ME Tutorial
C++  Tutorial
Java  Tutorial
PHP Tutorial
ASP Tutorial
 
แบบสำรวจ

Home - Article - Tutorial - Sourcecode - Dev Handbook - Search - WebBoard - Links - About Us

สงวนลิขสิทธิ์ ห้ามคัดลอก ทำซ้ำ แก้ไข ดัดแปลง ไม่ว่าในรูปแบบใด โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์จากกระทรวงพาณิชย์: 7100503002000
Copyright 2001 SourceCode.in.th