GUI ข นส ง และ Applet Advanced GUI and Applet



Similar documents
การจ ดการก บแฟ มข อม ล จ ดเก บเอกสาร (Save)

ท างานก บข อม ล การเล อนต าแหน ง

ค ม อการใช งานระบบประเม นค ณภาพการศ กษา (e-sar) สาน กคอมพ วเตอร มหาว ทยาล ยท กษ ณ

BMS INVENTORY ข อม ลพ นฐาน

แผนการจ ดการเร ยนร ระด บ ปวช. ปวส. รห สว ชา ว ชา คอมพ วเตอร เพ องานอาช พ จานวน 2 หน วยก ต เวลา 3 ช วโมง / ส ปดาห รวม 54 ช วโมง / ภาคเร ยน

การพ ฒนาระบบเอกสารภายในส าน กงาน (E-Document)

ค ม อการใช งาน (ส าหร บผ จ ดก จกรรม) โครงการ พ ฒนาระบบบร หารจ ดการฐานข อม ล เคร อข ายผ ม ส วนได เส ยในการประกอบก จการพล งงาน

เอกสาร ค ม อการใช งาน โปรแกรม e-office ส าหร บผ ใช งานท วไป

ก จกรรมท 2.1 ทบทวนการใช งานโปรแกรมระบบปฏ บ ต การ Windows 95 และการเร ยกใช งานโปรแกรมเอ กเซล

เอกสารประกอบการเร ยน เร อง คอมพ วเตอร น าร

หล กส ตร การบ าร งร กษาคอมพ วเตอร เบ องต น

ค ม อการใช งาน สาหร บคร ผ สอน,คร ท ปร กษา

บทท หล กการแก ป ญหาด วยคอมพ วเตอร

ค ม อ ระบบบร หารโปรแกรมงานทะเบ ยนและว ดผลการศ กษา ส าหร บผ ด แลระบบ

ส วนเจ าหน าท ผ บทท 1 ส าน กบร หารงานกลาง น าเข าข อม ล ท วไป จ งเล อนเง นเด อนน ก ไขข อม ลผลการ ดรอบการประ ม น 2. เล อกป งบประมาณ 1-1 โดย บร ษ ท

How To Use Powerpoint And Powerpoint 2.2 On A Computer Or Tablet

ตอนท 3 การนาเข าข อม ล

4. การใช งานโปรแกรมตารางค านวณ

ค ม อการใช งานระบบ สาน กบร หารการม ธยมศ กษาตอนปลาย 2556 WEB SITE MANAGEMENT SYSTEM SOFTWARE. VERSION 1.0

ง14201 คอมพ วเตอร รายว ชาเพ มเต ม กล มสาระการเร ยนร การงานอาช พและเทคโนโลย ช นประถมศ กษาป ท 4 เวลา 80 ช วโมง

การใช ระบบบ ญช ค มเคร องคอมพ วเตอร และอ ปกรณ

ค ม อการใช งาน การใช งานโปรแกรมท าเน ยบส วนราชการ CONTROL MENU INFORMATION PORT

จ ดท าโดย กองห องสม ด กรมย ทธศ กษาทหารเร อ

งานอาช พ 2. อธ บายส วนประกอบของหน าต างโปรแกรม ในหน วยท 4 โครงสร างของเน อการ ค นคว า และการม ส วนร วมใน (5 ส ปดาห )

ต วอย างการใช งาน โปรแกรมกฎหมายส งแวดล อม ความปลอดภ ยและ การประเม นความสอดคล อง

บทท 3 ระบบการแจ งข าวสารประชาส มพ นธ อ เล กทรอน กส

การเช อมโยงภาพน ง ว ธ สร างการเช อมโยง

ค าอธ บายรายว ชา คอมพ วเตอร

CryptBot e-office/e-document Alert TM

การจ ดก จกรรมต างๆ โดยใช ACTIVITY DIAGRAM

จ ดทาโดย งานพ ฒนาระบบสารสนเทศ

การพ ฒนาโปรแกรมฐานข อม ล ส าหร บแฟ มข อม ลในคอมพ วเตอร ส วนบ คคล

ตารางว เคราะห เน อหาหน วยการสอน

ค ม อการใช งาน ระบบจ ดส งรายช ออาจารย ผ สอนผ านเคร อข ายอ นเตอร เน ต

ล าด บเลข ระด บ 1 ล าด บเลข ระด บ 2 ห วเร อง 1 ห วเร อง2

การจ ดและตกแต งข อความ

มหาว ทยาล ยราชภ ฏส ราษฎร ธาน ระบบการประเม นค ณภาพการบร หารงาน มหาว ทยาล ยราชภ ฏส ราษฎร ธาน ม ข!นตอนการใช

1. ต าแหน งท ร บสม ครสอบค ดเล อก - น กบร หารงานท วไป ระด บ 6 จ านวน 1 อ ตรา (ห วหน าส าน กงานปล ดองค การบร หารส วนต าบลธารน าท พย )

ค ม อ กระทรวงศ กษาธ การ สาน กงานคณะกรรมการการอาช วศ กษา

ค ม อระบบรายงานผลการดาเน นงานรายเด อน ความร เบ องต นในการใช โปรแกรม

ข นตอนการต ดต งระบบปฏ บ ต การ Microsoft Windows XP Professional โดยใช โปรแกรมจ าลอง (VMware Workstratitioin)

User Manual Editor Tool Proposal V1.0

เร อง การออกแบบงานนาเสนอ และ เทคน คการจ ดการภาพน ง

How To Use A Powerpoint Powerpoint (Powerpoint 2) (Powerbook 2)

E Office ส าน กงานเขตพ นท การศ กษานครราชส มา เขต 6

โปรแกรมระบบเผยแพร ผลงาน และนว ตกรรมทางการศ กษา (E-innovation)

2. ค ณสมบ ต ของผ แข งข น เป นน กศ กษาท กาล งศ กษาอย ในระด บม ธยมศ กษาตอนต น โดยไม จาก ดอาย

เคร องม อช ดท ๕ ด านท กษะในการว เคราะห เช งต วเลข การส อสารและเทคโนโลย สารสนเทศ

การตรวจสอบการต ดต งโปรแกรมสแกนเอกสารและการด ภาพสแกน ค ม อทางด านเทคน ค

Nature4thai Application

งานสถ ต และรายงาน. (Statistic & Reporting Module) ค ม อการใช งานระบบห องสม ดอ ตโนม ต สพฐ. เวอร ช น 3 1

เม อเข าระบบตามหน วยงานแล ว จะพบหน าจอ ระบบจ ดการเว บไซต

ค ม อการใช งานโปรแกรมระบบจ ดการคล งข อสอบส วนกลาง

MICROSOFT ACCESS 2010 INTERMEDIATE

หล กส ตร การสร าง E-book ด วยโปรแกรม DeskTop Author

KingdomofThailand EDICTOFGOVERNMENT±

คาช แจง เคร องม อว ดและประเม นความสามารถและท กษะ ตามจ ดเน นการพ ฒนาค ณภาพผ เร ยน การใช เทคโนโลย เพ อการเร ยนร ช นม ธยมศ กษาป ท ๒

เอกสารประกอบการต ดต ง OpenOffice.org

- พระราชกฤษฎ กาว าด วยว ธ การแบบปลอดภ ยในการท าธ รกรรมทาง อ เล กทรอน กส พ.ศ. ๒๕๕๓

ค ม อการใชงาน SMS Corporate (

ระบบจ ดการข อม ลของโรงพยาบาลเพ อการพ ฒนาโดยว ธ เปร ยบเท ยบ Benchmarking & KPI Dictionary

ค ม อการใช งานระบบงานสารบรรณ E-Office ส าน กงานสาธารณส ขจ งหว ดพ ษณ โลก

บทท 3 การบร หารจ ดการ ระบบสารสนเทศภ ม ศาสตร ป าช มชน

เอกสารประกอบการเร ยนรายว ชาเพ มเต ม

เอกสารค ม อการใช ระบบงาน เวอร ช น โครงการพ ฒนาระบบคอมพ วเตอร และระบบฐานข อม ล

ระบบสารบรรณอ เล กทรอน กส

เป นเมน ท ใช ในการจ ดการภาพเอกกสาร โดยม รายละเอ ยดด งน

ค ม อการใช งานโปรแกรม ระบบฐานข อม ล อปพร.. ( ระด บกรม ด บกรม)) กรมป องก นและบรรเทาสาธารณภ ย กระทรวงมหาดไทย

๒) การบ นท กเอกสาร. ๑๘) การใช ค ย ล ด Ctrl + V, Ctrl + C, Ctrl + X ๒๐) ส งพ มพ เอกสารออกทางเคร องพ มพ ๑) การเป ดใช โปรแกรม

การใช งานระบบโปรแกรม

ค ม อการปฏ บ ต งาน กระบวนการจ ดโครงการ/ก จกรรม

ปฏ บ ต การคร งท 6 การใช โปรแกรมส าน กงาน คร งท 4

บทท 1 เร มต นการใช งาน

Thai For Documents To Go User Manual. For Palm OS Garnet

แบบประเม นแผนการจ ดการเร ยนร

การจ ดการระบบต ดต อเราโดย Web Admin สามารถแบ งออกเป น 6 ห วข อ ด งน

การจ ดร ปเล ม แผนการจ ดการเร ยนร แบบเต มภาคเร ยน

ค ม อการต ดต งโปรแกรม ระบบบร หารงานว จ ยแห งชาต แบบ Offline (NRPM Offline) ส าหร บเจ าหน าท หน วยงาน

การใช Microsoft Excel ในการค านวณทางการเง น ตอนท 4

ค ม อการใช งาน BLS iexcel

ระบบ E-OFFICE เป นโปรแกรม ส าหร บบร หารงานในองค กร,บร ษ ท online ผ านระบบอ นเตอร เน ต หร อ Network

ค ม อการปฏ บ ต งาน กระบวนการงานธ รการและสารบรรณ

บทท 13 การทาเอกสารประกอบโปรแกรม

โดย : อ ญชนา กล นเท ยน

ค ม อการใช งานโปรแกรม Flip Album Vista Pro 7.0

ความส าค ญของการประเม นค ณภาพ สถานศ กษาโดยต นส งก ด ผ องพรรณ จร สจ นดาร ตน ศ กษาน เทศก เช ยวชาญ หน วยศ กษาน เทศก ส าน กงานคณะกรรมการการอาช วศ กษา

คร จ งหว ด ศร สล บ แผนกว ชาคอมพ วเตอร ธ รก จ

ร ปท หน าจอ การค นหาการจ ดสรรอาคารบ านพ ก

รห สต วช ว ด รวม 7 ต วช ว ด

เทคน คการตรวจสอบความถ กต องของ ข อม ล. Error Detection and Correction

กระบวนการบ นท กรายการขอจ ายช าระเง น

ค ม อการใช โปรแกรมจ ดเก บเอกสาร PSO ส าน กงานป องก นควบค มโรคท 5 จ งหว ดนครราชส มา *********************

การพ มพ /แก ไขเอกสาร โหมดการพ มพ ภาษาไทย / ภาษาอ งกฤษ

ค ม อการใช งานเว บไซต สาเร จร ป. FreeWebFree.com

ค ม อการร บ-ส งหน งส อราชการ (OBEC e-office)

แบบบรรยายล กษณะงาน (Job Description) กรมพ ฒนาท ด น

Transcription:

บทท 16 GUI ข นส ง และ Applet Advanced GUI and Applet ในบทน จะกล าวถ งว ธ การใช งาน JComponent ซ งม ความสามารถพ เศษ และม ร ปแบบท สวยงานเป นท ร จ ก โดยท วไป ได แก JOptionPane, JDesktopPane, JInternalFrame, JColorChooser และ JFileChooser ในส วนส ดท ายของบทน กล าวถ งการต งค า Look and Feel และการสร าง Applet หร อโปรแกรมท ท างาน บน Web Browser JOptionPane JOptionPane ใช ในการสร าง Dialog ซ งเป นหน าต างสาหร บแสดงข อความหร อร บข อม ลจากผ ใช งานและม ป ม OK เม อผ ใช งานกดป ม OK จะส งผลให Dialog ป ดลง ว ตถ ประสงค ของการใช Dialog เพ อแสดงข อความ ส นๆ หร อร บข อม ลจานวนไม มากจากผ ใช งาน Dialog แบ งเป น 2 ประเภท ค อ 1. Modal Dialog ในช วงเวลาท Dialog ท างานอย Windows จะไม สามารถใช งานได จนกระท ง ผ ใช งานป ด Dialog ลง ต วอย างของ Modal Dialog เช น Dialog ของการเป ดแฟ มข อม ลของ โปรแกรม Microsoft Word ส วนการสร าง Modal Dialog ใช คลาส JOptionPane 2. Non-modal Dialog ต างจากประเภทแรกค อ ผ ใช งานสามารถใช งาน Windows ได ปกต แม ว า Non-modal Dialog จะถ กเป ดอย การสร าง Non-modal Dialog ท าได โดยใช คลาส JDialog ซ ง การสร างใช ว ธ เด ยวก บการสร าง JFrame การแสดง Dialog โดยใช คลาส JOptionPane จ าเป นต องใช Static Method ซ งอย ในคลาส JOptionPane ด งน JOptionPane.showConfirmDialog() เพ อรอร บคาย นย นในการส งงานโดยม ป ม Yes No หร อ Cancel JOptionPane.showInputDialog() เพ อร บข อม ลจากผ ใช งาน JOptionPane.showMessageDialog() เพ อแสดงข อความส นๆ JOptionPane.showOptionDialog() เป น Method ท อน ญาตให ม การปร บแต งการแสดง Dialog ตามท ผ เข ยนโปรแกรมต องการได ค าท ส งกล บจาก Method showconfirmdialog() เป นค าคงท ของป มท ผ ใช งานกดเล อกเช น OK_OPTION CANCEL_OPTION หร อ YES_OPTION ซ งท าให ผ เข ยนโปรแกรมสามารถทราบว าผ ใช งานกดป มใด ต วอย าง ร ปแบบการเร ยกใช งาน Method showconfirmdialog() ม 4 แบบค อ static int showconfirmdialog(component parentcomponent, Object message) static int showconfirmdialog(component parentcomponent, Object message, String title, int optiontype)

static int showconfirmdialog(component parentcomponent, Object message, String title, int optiontype, int messagetype) static int showconfirmdialog(component parentcomponent, Object message, String title, int optiontype, int messagetype, Icon icon) ส วน Parameter ท ต องกาหนดเม อม การเร ยกใช Method ท ง 4 ม ด งน ParentComponent ใช ระบ ต วแปรของ JFrame โดย Dialog จะแสดงอย ภายใต JFrame ท ระบ ในกรณ ท โปรแกรมม การใช JFrame มากกว า 1 ถ าให ต วแปร ParentComponent เป น null ส งผลให Dialog แสดง ภายใต JFrame หล ก และอย ตรงกลางจอภาพ message เป นข อม ลท ต องการให แสดงใน Dialog โดยท วไป message เป นชน ด String หร อถ าเป นว ตถ ชน ดอ น Method tostring() จะถ กเร ยกใช แทน ต วแปร message อาจเป น JLabel ได อ กด วย title เป น String ท แสดงบน Title Bar ของ Dialog optiontype เป นการระบ ชน ดของจานวนป มท ต องการ o DEFAULT_OPTION o YES_NO_OPTION o YES_NO_CANCEL_OPTION o OK_CANCEL_OPTION messagetype เป นการระบ ชน ดของร ปภาพท ต องการให แสดง o ERROR_MESSAGE o INFORMATION_MESSAGE o WARNING_MESSAGE o QUESTION_MESSAGE o PLAIN_MESSAGE icon ผ เข ยนโปรแกรมสามารถกาหนดร ปภาพท ต องให แสดงใน Dialog ได เอง โปรแกรม ShowDialog1.java แสดงการใช งานค าส ง showconfirmdialog() โดยกดป ม Start เพ อแสดง Confirm Dialog ร ปแบบต างๆ import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; class MyFrame extends JFrame implements ActionListener{ public MyFrame(int width, int height) { Toolkit tk = gettoolkit(); Dimension screen = tk.getscreensize(); setbounds( (screen.width - width)/2, (screen.height - height)/2, width, height); setdefaultcloseoperation(exit_on_close); JButton start = new JButton("Start"); start.addactionlistener(this); 318 การเข ยนโปรแกรมภาษา Java

getcontentpane().setlayout(new FlowLayout()); getcontentpane().add(start); public void actionperformed(actionevent e) { JOptionPane.showConfirmDialog(this, "1. Are you sure to do this"); JOptionPane.showConfirmDialog(this, "2. DEFAULT_OPTION AND ERROR_MESSAGE", "Confirm Dialog", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); JOptionPane.showConfirmDialog(this, "3. YES_NO_OPTION AND INFORMATION_MESSAGE", "Confirm Dialog", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); JOptionPane.showConfirmDialog(this, "4. YES_NO_CANCEL_OPTION AND WARNING_MESSAGE", "Confirm Dialog", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); JOptionPane.showConfirmDialog(this, "5. OK_CANCEL_OPTION AND QUESTION_MESSAGE", "Confirm Dialog", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); public class ShowDialog1 { public static void main(string[] args) { MyFrame frame = new MyFrame(200, 200); frame.settitle("confirm Dialogs"); frame.setvisible(true); ภาพท 16.1 แสดงต วอย าง Dialog จากโปรแกรม ShowDialog1.java ค าส ง showinputdialog() ใช ในการร บข อม ลจากผ ใช งาน โดยค าท ร บจะเป น String ซ งผ เข ยนโปรแกรม สามารถใช ค าส งใน Package java.lang เพ อแปลง String ให อย ในร ปแบบท ต องการได เช น การเปล ยน String เป น Integer โดยใช ค าส ง Integer.parseInt(String input) ได ส วนค าส ง showmessagedialog() ม ล กษณะคล าย การเข ยนโปรแกรมภาษา Java 319

ค าส ง showconfirmdialog() ค อใช แสดงข อความส นๆ ให ผ ใช งานทราบ และไม ม ค าส งกล บจาก Method น ค าส ง showmessagedialog() สามารถส งผ าน Parameter ได หลายร ปแบบ แต ค า Parameter ม ความคล ายคล งก บ Parameter ในค าส ง showconfirmdialog() จ งไม กล าวซ าอ ก ผ อ านสามารถอ านเพ มเต มถ งร ปแบบการการส ง Parameter ได จาก Java API Documentation โปรแกรม ShowDialog2.java แสดงการร บข อม ลจากผ ใช งานโดย ใช showinputdialog() import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; class MyFrame extends JFrame implements ActionListener{ public MyFrame(int width, int height) { Toolkit tk = gettoolkit(); Dimension screen = tk.getscreensize(); setbounds( (screen.width - width)/2, (screen.height - height)/2, width, height); setdefaultcloseoperation(exit_on_close); JButton start = new JButton("Start Asking"); start.addactionlistener(this); getcontentpane().setlayout(new FlowLayout()); getcontentpane().add(start); public void actionperformed(actionevent e) { String name = JOptionPane.showInputDialog(this,"What is your name?"); String old = JOptionPane.showInputDialog(this,"How old are you?"); int likejava = JOptionPane.showConfirmDialog(this, "Do you like study in Java?", "Asking", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); //ถ าผ ป อนข อม ลกดป ม Cancle ค าท ส งกล บจะเป น null if(name!= null) JOptionPane.showMessageDialog(this, "You are " +name); if(old!= null) JOptionPane.showMessageDialog(this, "You are " + old + " years old"); if(likejava == JOptionPane.OK_OPTION) JOptionPane.showMessageDialog(this, "You will be a good programmer in Java"); else JOptionPane.showMessageDialog(this, "Are you kidding? Java is very easy to learn. You will like it"); public class ShowDialog2 { public static void main(string[] args) { MyFrame frame = new MyFrame(200,100); frame.settitle("confirm Dialogs"); frame.setvisible(true); 320 การเข ยนโปรแกรมภาษา Java

ภาพท 16.2 แสดงการใช Input Dialog จากโปรแกรม ShowDialog2.java ค าส ง showoptiondialog() เป ดโอกาสให ผ เข ยนโปรแกรมสามารถสร าง Custom Dialog ได โดยม ค าส ง ด งต อไปน showoptiondialog ( Component parentcomponent, Object message, String title, int optiontype, int messagetype, Icon icon, Object[] options, Object initialvalue ) ค า Object[] option และ Object initialvalue เป นการระบ ให Dialong แสดงป มเช น Yes หร อ No ตาม ต องการได โปรแกรม ShowDialog3.java แสดงว ธ ใช งานคาส งของ showoptiondialog() import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; class MyFrame extends JFrame implements ActionListener{ public MyFrame(int width, int height) { Toolkit tk = gettoolkit(); Dimension screen = tk.getscreensize(); setbounds( (screen.width - width)/2, (screen.height - height)/2, width, height); setdefaultcloseoperation(exit_on_close); JButton start = new JButton("Start Option Dialog"); start.addactionlistener(this); getcontentpane().setlayout(new FlowLayout()); getcontentpane().add(start); public void actionperformed(actionevent e) { Object[] options = { "OK", "CANCEL" ; JOptionPane.showOptionDialog(null, "Choose one", "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, การเข ยนโปรแกรมภาษา Java 321

options[0])); public class ShowDialog3 { public static void main(string[] args) { MyFrame frame = new MyFrame(200, 100); frame.settitle("confirm Dialogs"); frame.setvisible(true); ภาพท 16.3 แสดงการใช Option Dialog จากโปรแกรม ShowDialog3.java JDesktopPane และ JInternalFrame JInternalFrame ค อหน าต างย อยใน Windows หล ก เช น ในโปรแกรม Microsoft Word ผ ใช งานสามารถ เป ดเอกสารเพ อใช งานได มากกว าหน งเอกสาร โดยเอกสารท กต วท เป ดจะอย ภายใต Windows หล ก การสร างหน าต างย อย เร มจากการสร างคลาส JDesktopPane เป น Pane หล กและสร าง JInternalFrame เพ อเพ มลงใน JDesktopPane ซ งอาจสร าง JInternalFrame ได มากกว าหน ง ส วนการสร าง GUI ใน JInternalFrame เหม อนก บการสร าง GUI บน JFrame ท กประการ คาส งท ใช ในการสร าง JInternalFrame ค อ JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable) โปรแกรม ShowJInternalFrame.java แสดงการใช งาน JInternalFrame โดยเม อผ ใช งานคล กท เมน Click Here ด งภาพท 16.4 จะปรากฏหน าต าง JInternalFrame ข น 1 หน าต าง import java.awt.*; import java.awt.event.keyevent; import java.awt.event.*; import javax.swing.*; class MenuFrame extends JFrame implements ActionListener{ private JMenuBar menubar; private JMenu clickheremenu; private JMenuItem addmenuitem; private JDesktopPane desktoppane; private static int count=1; public MenuFrame (int width, int height){ Toolkit tk = gettoolkit(); 322 การเข ยนโปรแกรมภาษา Java

Dimension screen = tk.getscreensize(); setbounds( (screen.width - width)/2, (screen.height - height)/2, width, height); setdefaultcloseoperation(exit_on_close); settitle("test JInternalFrame"); // สร าง MenuBar menubar = new JMenuBar(); // สร าง JMenu clickheremenu = new JMenu("Click Here"); // สร าง JMenuItem addmenuitem = new JMenuItem("Add JInternalFrame"); // เพ ม JMenuItem ไปท JMenu clickheremenu.add(addmenuitem); // เพ ม JMenu ไปท MenuBar menubar.add(clickheremenu); // ต งค าให Windows แสดง Menu; setjmenubar(menubar); // เพ ม Action Listener ให ก บ MenuItem addmenuitem.addactionlistener(this); // สร าง JDesktopPane สาหร บบรรจ JInternalFrame desktoppane = new JDesktopPane(); // เพ ม JDesktopPane ไปท JFrame getcontentpane().add(desktoppane); public void actionperformed(actionevent e) { // สร าง JInternalFrame JInternalFrame internalframe = new JInternalFrame("Document " + count++, true, true, true, true); // สร าง JTextArea สาหร บแสดงผลล พธ จากการเล อกเมน ต างๆ JTextArea text = new JTextArea(); JScrollPane scroll = new JScrollPane(text); internalframe.getcontentpane().add(scroll); internalframe.setsize(200, 200); //เพ ม JInternalFrame ไปท JDesktopPane desktoppane.add(internalframe); internalframe.show(); public class ShowJInternalFrame{ public static void main(string[] args) { MenuFrame frame = new MenuFrame(600,600); frame.setvisible(true); การเข ยนโปรแกรมภาษา Java 323

การใช งาน JInternalFrame ม ข อควรปฏ บ ต ด งน เม อสร าง JInternalFrame แล วจ าเป นต องม การต งค า ขนาดของ JInternalFrame ด วยท กคร งเพราะค าขนาดเร มต นของ JInternalFrame เป น 0 ค าส งท ใช ในการต งค า เช น setbounds() setsize() หร อ pack() เม อม การต งค าขนาดของ JInternalFrame แล ว ต องเร ยกใช Method show() หร อ setvisible(true) สาหร บท ก JInternalFrame ด วย ไม เช นน นใน Windows จะไม แสดง JInternalFrame น น ภาพท 16.4 แสดงผลล พธ จากโปรแกรม ShowJInternalFram.java JColorChooser JColorChooser ใช แสดง Dialog ส าเร จภาพท ใช ในการเล อกส ท ต องการ ค าส งท ใช ในการสร าง JColorChooser Dialog ค อ showdialog(component component, String title, Color initialcolor) ต วแปร title เป นการระบ ถ งข อความท แสดงใน Dialog Title ส วนค า initialcolor เป นค าของส เร มต นเม อม การแสดง Dialog โปรแกรม ShowJColorChooser.java แสดงการใช งาน JColorChooser เพ อเปล ยนส ฉากหล ง ของ JFrame import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; class MyFrame extends JFrame implements ActionListener{ private Color color; public MyFrame(int width, int height) { Toolkit tk = gettoolkit(); Dimension screen = tk.getscreensize(); setbounds( (screen.width - width)/2, (screen.height - height)/2, width, height); 324 การเข ยนโปรแกรมภาษา Java

setdefaultcloseoperation(exit_on_close); JButton colorbutton = new JButton("Change background Color"); colorbutton.addactionlistener(this); getcontentpane().setlayout(new FlowLayout()); getcontentpane().add(colorbutton); public void actionperformed(actionevent e) { // แสดง Dialog สาหร บการเล อกส โดยให ส เร มต นเป นส เข ยว color = JColorChooser.showDialog(this, "Pick a color", Color.GREEN); // ถ าผ ใช งานกดป ม Cancle ใน Dialog ค าท ส งกล บจะเป น null // ด งน นจาเป นต องตรวจสอบค าท ส งกล บด วย if(color!= null) getcontentpane().setbackground(color); public class ShowJColorChooser { public static void main(string[] args) { MyFrame frame = new MyFrame(200,200); frame.settitle("jcolorchooser"); frame.setvisible(true); ภาพท 16.5 แสดงผลล พธ จากโปรแกรม ShowJColorChooser.java JFileChooser ใน Package javax.swing ม คลาสช อ JFileChooser ซ งท าหน าท เป น Dialog ท ช วยในการ Open และ Save แฟ มข อม ล คาส งท ใช ในการสร างว ถต JFileChooser ค อ JFileChooser filechooser = new JFileChooser(); การเข ยนโปรแกรมภาษา Java 325

การสร าง JFileChooser โดยไม ระบ ต วแปรใน Constructor ท าให เม อม การเป ด Dialog ของ JFileChooser ทาให แสดงข อม ลของ User s Default Directory แต ผ เข ยนโปรแกรมสามารถระบ Directory เร มต น ให ก บ JFileChooser ได โดยใช Construtor ด งต อไปน JFileChooser filechooser = JFileChooser(File currentdirectory); // หร ออาจใช คาส งต อไปน // ระบ ค า Current Directory ให ก บ JFileChooser filechooser.setcurrentdirectory(new File(. )); ในกรณ ท ผ เข ยนโปรแกรมคาดหว งให ผ ใช งานเล อกแฟ มข อม ลท กาหนดไว แล วและให ผ ใช งานสามารถเล อก แฟ มข อม ลได มากกว า 1 แฟ มข อม ล ใช คาส งต อไปน // เล อกแฟ มข อม ลช อตามต วแปร filename เท าน น filechooser.setselectedfile(new File(filename)); // อน ญาตให ผ ใช งานสามารถเล อกได หลายแฟ มข อม ล filechooser.setmultiselecteionenabled(true); ค าส งต อไปเป นค าส งให แสดง JFileChooser Dialog ซ งแบ งเป น 2 ค าส งค อ ค าส งท ใช ในการ Open และ Save แฟ มข อม ล โดยเม อจบคาส งจะม การส งค ากล บเป น JFileChooser.CANCEL_OPTION เม อผ ใช งานกดป ม Cancel JFileChooser.APPROVE_OPTION เม อผ ใช งานกดป ม Open หร อ Save JFileChooser.ERROR_OPTION เม อม การป ด Dialog โดยการกดป มกากบาท ด งน นหล งจากค าส งน ท างานเสร จแล ว จ าเป นต องม การตรวสอบค าว าผ ใช งานกดป มใด เพ อสามารถ กาหนดการทางานสาหร บข นตอนต อไปได ถ กต อง int result = filechoooser.showopendialog(component parent); //หร อ int result = filechooser.showsavedialog(component parent); ต วอย างเช นค า result เท าก บ JFileChooser.APPROVE_OPTION แสดงว าผ ใช งานเล อกป ม Open/Save ส วนการหาว าผ ใช งานเล อกแฟ มข อม ลใดใช คาส ง File file = filechooser.getselectedfile(); String filename = file.getname(); //ในกรณ ท อ ญาตให ผ ใช งานสามารถเล อกแฟ มข อม ลได มากกว าหน งแฟ มข อม ลใช คาส งต อไปน File[] file = filechooser.getselectedfiles(); โปรแกรม ShowJFileChooser1.java แสดงการเป ดแฟ มข อม ลชน ดท เป นต วอ กษรซ งใช JInternalFrame ในการแสดงผลของแฟ มข อม ล 326 การเข ยนโปรแกรมภาษา Java

import java.awt.*; import java.awt.event.keyevent; import java.awt.event.*; import javax.swing.*; import java.io.*; class MenuFrame extends JFrame implements ActionListener{ private JMenuBar menubar; private JMenu filemenu; private JMenuItem openmenuitem; private JDesktopPane desktoppane; public MenuFrame (int width, int height){ Toolkit tk = gettoolkit(); Dimension screen = tk.getscreensize(); setbounds( (screen.width - width)/2, (screen.height - height)/2, width, height); setdefaultcloseoperation(exit_on_close); settitle("warning! Open Text File Only"); // สร าง Menu menubar = new JMenuBar(); filemenu = new JMenu("File"); openmenuitem = new JMenuItem("Open"); filemenu.add(openmenuitem); menubar.add(filemenu); // ต งค าให Windows แสดง Menu setjmenubar(menubar); // เพ ม ActionListener ให ก บ MenuItem openmenuitem.addactionlistener(this); desktoppane = new JDesktopPane(); getcontentpane().add(desktoppane); public void actionperformed(actionevent evt) { // สร าง JFileChooser โดยระบ ค าเร มต นเป น Current Directory JFileChooser filechooser = new JFileChooser(new File(".")); // ทดสอบว าผ ใช งานกดป ม Open จร ง if(filechooser.showopendialog(this) == JFileChooser.APPROVE_OPTION) { File file = filechooser.getselectedfile(); JInternalFrame internalframe = new JInternalFrame(file.getName(), true, true, true, true); // สร าง JTextArea สาหร บแสดงข อม ลในแฟ มข อม ล JTextArea text = new JTextArea(); // ต งค า Tab หร อย อหน า ให ม ขนาด 3 ต วอ กษร text.settabsize(3); // ต งค าให JTextArea สามารถต ดคาได text.setwrapstyleword(true); JScrollPane scroll = new JScrollPane(text); internalframe.getcontentpane().add(scroll); internalframe.setsize(200,200); desktoppane.add(internalframe); internalframe.show(); การเข ยนโปรแกรมภาษา Java 327

// เป ดแฟ มข อม ลท ผ ใช งานเล อก try { // จบคาส ง try BufferedReader reader = new BufferedReader ( new InputStreamReader ( new FileInputStream (file))); String st = reader.readline(); while( st!= null ){ // เพ มข อม ลไปท JTextArea คร งละ 1 บรรท ด text.append(st+"\n"); st = reader.readline(); catch (IOException e) { System.out.println("Error while reading the file"); System.exit(1); // จบคาส ง catch // จบคาส ง if else { JOptionPane.showMessageDialog(this,"Plese at least pick a file"); // จบคาส ง else // จบคาส ง ActionPerformed() public class ShowJFileChooser1 { public static void main(string[] args) { MenuFrame frame = new MenuFrame(600, 600); frame.setvisible(true); ภาพท 16.6 ผลล พธ จากโปรแกรม ShowJFileChooser1.java 328 การเข ยนโปรแกรมภาษา Java

โปรแกรม ShowJFileChooser1.java อน ญาตให ผ ใช งานเล อกแฟ มข อม ลได ท กประเภท ถ าต องการเจาะจง ให ผ ใช งานเล อกแฟ มข อม ลท ผ เข ยนโปรแกรมกาหนดไว จาเป นต องสร าง File Filter ต วอย างการสร าง File Filter ท ร บแฟ มข อม ลท ม นามสก ล.java ค อ import javax.swing.filechooser.filefilter; import java.io.file; // สร างคลาสใหม ท extends javax.swing.filechooser.filefilter // และ Override Method accept() และ getdescription() class JavaFilter extends FileFilter { public boolean accept(file f) { // ส งค า True เม อแฟ มข อม ลท ผ ใช งานเล อกลงท ายด วย.java // หร อเป น Directory return f.getname().tolowercase().endswith(.java ) f.isdirectory(); public String getdescription() { return Java File ; เม อสร าง File Filter แล ว ข นตอนต อไปเร ยกใช คาส ง JFileChooser filechooser = new JFileChooser(); filechooser.addchoosablefilefilter(new JavaFilter()); เท าน น โปรแกรม ShowJFileChooser2.java แสดงการใช File Filter เพ อเป ดแฟ มข อม ลท เป นประเภท Java import java.awt.*; import java.awt.event.keyevent; import java.awt.event.*; import javax.swing.*; import java.io.*; import javax.swing.filechooser.filefilter; import java.io.file; // สร างคลาสใหม ท extends javax.swing.filechooser.filefilter // และ Override Method accept() และ getdescription() class JavaFilter extends FileFilter { public boolean accept(file f) { // ส งค า True เม อแฟ มข อม ลท ผ ใช งานเล อกลงท ายด วย.java // หร อเป น Directory return f.getname().tolowercase().endswith(".java") f.isdirectory(); public String getdescription() { return "Java File"; การเข ยนโปรแกรมภาษา Java 329

class MenuFrame extends JFrame implements ActionListener{ private JMenuBar menubar; private JMenu filemenu; private JMenuItem openmenuitem; private JDesktopPane desktoppane; public MenuFrame (int width, int height){ Toolkit tk = gettoolkit(); Dimension screen = tk.getscreensize(); setbounds( (screen.width - width)/2, (screen.height - height)/2, width, height); setdefaultcloseoperation(exit_on_close); settitle("warning! Open Text File Only"); // สร าง Menu menubar = new JMenuBar(); filemenu = new JMenu("File"); openmenuitem = new JMenuItem("Open"); filemenu.add(openmenuitem); menubar.add(filemenu); // ต งค าให Windows แสดง Menu setjmenubar(menubar); // เพ ม Action Listener ให ก บ MenuItem openmenuitem.addactionlistener(this); desktoppane = new JDesktopPane(); getcontentpane().add(desktoppane); public void actionperformed(actionevent evt) { // สร าง JFileChooser โดยระบ ค าเร มต นเป น Current Directory JFileChooser filechooser = new JFileChooser(new File(".")); // ทดสอบว าผ ใช งานกดป ม Open จร ง filechooser.addchoosablefilefilter(new JavaFilter()); if(filechooser.showopendialog(this) == JFileChooser.APPROVE_OPTION) { File file = filechooser.getselectedfile(); JInternalFrame internalframe = new JInternalFrame(file.getName(), true, true, true, true); // สร าง JTextArea สาหร บแสดงข อม ลในแฟ มข อม ล JTextArea text = new JTextArea(); // ต งค า Tab ให ม ขนาด 3 ต วอ กษร text.settabsize(3); // ต งค าให JTextArea สามารถต ดคาได text.setwrapstyleword(true); JScrollPane scroll = new JScrollPane(text); internalframe.getcontentpane().add(scroll); internalframe.setsize(200, 200); desktoppane.add(internalframe); internalframe.show(); // เป ดแฟ มข อม ลท ผ ใช งานเล อก try { BufferedReader reader = new BufferedReader ( new InputStreamReader ( new FileInputStream (file))); 330 การเข ยนโปรแกรมภาษา Java

// จบคาส ง try String st = reader.readline(); while( st!= null ){ //เพ มข อม ลไปท JTextArea คร งละ 1 บรรท ด text.append(st+"\n"); st = reader.readline(); catch (IOException e) { System.out.println("Error while reading the file"); System.exit(1); // จบคาส ง catch // จบคาส ง if else { JOptionPane.showMessageDialog(this,"Plese at least pick a file"); // จบคาส ง else // จบคาส ง ActionPerformed() public class ShowJFileChooser2 { public static void main(string[] args) { MenuFrame frame = new MenuFrame(600, 600); frame.setvisible(true); ภาพท 16.7 แสดงการใช File Filter จากโปรแกรม ShowJFileChooser2.java Look and Feel GUI ในแต ละระบบปฏ บ ต การม ความแตกต างก น ด งน นผ ใช งาน GUI ในระบบปฏ บ ต การ UNIX อาจไม ค นเคยก บ GUI ในระบบปฏ บ ต การ Mac OS X แต ถ าก าหนดให ร ปแบบการแสดงผลของ GUI โดยท วไปม ล กษณะเฉพาะแบบเด ยว หมายความถ ง ถ าน าโปรแกรมเด ยวก นไปท างานบนระบบปฏ บ ต การ UNIX หร อ Mac การเข ยนโปรแกรมภาษา Java 331

OS X ร ปแบบของ GUI จะม ล กษณะเหม อนก น เพ อท าให ผ ใช งานเก ดความค นเคยร ปแบบของ GUI และผ ใช งาน สามารถใช งานโปรแกรมน บนระบบปฏ บ ต การท ต างก น โดยท ไม ต องพะวงถ งร ปแบบท เปล ยนไปของ GUI แต บางคร งผ ใช งานระบบปฏ บ ต การ Microsoft Windows จนเคยช นต องการใช ร ปแบบ GUI ท เป นล กษณะ ของ Microsoft Windows เท าน น ด งน นเพ อเพ อให เก ดความย ดหย นในการแสดงร ปแบบ GUI ในแบบต างๆ นอกเหน อจากแบบเด ม Java ได สร างค าส งการต งค า Look and Feel เพ อให ผ เข ยนโปรแกรมสามารถต งค าการ แสดงร ปแบบ GUI ในล กษณะท ต องการได คาส งท ใช ในการต งค า Look and Feel ค อ public static void main(string[] args) { try { UIManager.setLookAndFeel(String classname); catch (Exception e) { JFrame frame = new JFrame(); ต วแปร classname สามารถเป นได ด งน "javax.swing.plaf.metal.metallookandfeel" เป นค าเร มต นในกรณ ท ไม ม การต งค า Look and Feel อ ก ช อเร ยก Java Look and Feel "com.sun.java.swing.plaf.windows.windowslookandfeel" ส าหร บแสดงผล GUI คล ายระบบ Microsoft Windows และใช ได ในระบบปฏ บ ต Windows เท าน น "com.sun.java.swing.plaf.motif.motiflookandfeel" ใช ได ก บท กระบบปฏ บ ต การ "javax.swing.plaf.mac.maclookandfeel" ใช ได ก บระบบปฏ ษ ต การ Mac OS เท าน น การต งค า Look and Feel แสดงในโปรแกรม ShowJFileChooser2LookandFeel.java ซ งแก ไขจากโปรแกรม ShowJFileChooser2.java โดยเพ มค าส งท ใช ในการต งค า Look and Feel ให เป นแบบ "com.sun.java.swing.plaf.windows.windowslookandfeel" public class ShowJFileChooser2LookandFeel { public static void main(string[] args) { try { UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.windowslookandfeel"); catch (Exception e) { MenuFrame frame = new MenuFrame(600,600); frame.setvisible(true); 332 การเข ยนโปรแกรมภาษา Java

ภาพท 16.8 แสดงการต งค า Look and Feel จากโปรแกรม ShowJFileChooser2LookandFeel.java เม อม การต งค า Look and Feel แล ว ถ าต องการเปล ยนเป นร ปแบบอ น สามารถใช ค าส ง updatecomponenttreeui(frame) เพ อเปล ยนค า Look and Feel ด งต วอย าง UIManager.setLookAndFeel(String classname); SwingUtilities.updateComponentTreeUI(frame); Applet การเร ยกด ข อม ลของเว บไซต ผ านระบบอ นเทอร เน ต ม ล กษณะการท างานท เร ยกว า Client/Server ค อ เคร องคอมพ วเตอร ท เป นผ ร องขอข อม ล (Client) ส งส ญาณคาขอใช บร การไปท เคร องผ ให บร การ (Server) เพ อขอใช บร การหร อขอข อม ล ในกรณ ท เป นการด ข อม ลในเว บ ผ ร องขอระบ ถ งแฟ มข อม ลท อย บนเคร องของผ ให บร การ เม อผ ให บร การได ร บการร องขอเร ยบร อยแล ว ผ ให บร การจะท าการตรวจสอบว าแฟ มข อม ลท ผ ขอบร การต องการม จร ง หร อไม ถ าม จ งส งแฟ มข อม ลน นผ านระบบอ นเตอร เน ตไปให ผ ร องขอ ในการให บร การท กคร งจะม การค านวณ เก ดข นท เคร องท ให บร การ เช น การตรวจสอบการย มหน งส อจากหอสม ดในมหาว ทยาล ยผ านระบบเว บ น กศ กษาใช เคร องคอมพ วเตอร ท บ านเพ อตรวจสอบว าน กศ กษาได ย มหน งส ออะไรบ าง และม ก าหนดส งค นเม อใด เม อน กศ กษา เร ยกด ข อม ล เคร องท ให บร การต องท าการตรวจสอบข อม ลซ งจ าเป นต องเร ยกข อม ลจากระบบฐานข อม ลซ งใช เวลา ในการเข าถ งข อม ล เม อได ข อม ลแล วจ งส งข อม ลกล บไปให เคร องท ขอใช บร การ งานท งหมดท กล าวมาน ต องใช เวลา ในการท างาน ด งน นถ าม ผ ต องการตรวจรายการย มหน งส อพร อมก นหลายคน เป นผลให เคร องท ให บร การต อง ท างานหน ก และอาจท าให ประส ทธ ภาพโดยรวมของระบบแย ลงได เพราะการท างานเก อบท กข นตอนท าท เคร องผ ให บร การ ด งน น Java ได ออกแบบโดยเน นการทางานท เคร องขอใช บร การเป นหล ก และม การร องขอข อม ลในกรณ ท จ าเป นเท าน น การท างานล กษณะน ท าให เคร องท ให บร การท างานน อยลงและท าให ประส ทธ ภาพของระบบ โดยรวมด ข น การทางานล กษณะน เร ยกว า Applet การเข ยนโปรแกรมภาษา Java 333

โปรแกรมท เข ยนข นในล กษณะ Applet ต องผ านต วแปลภาษา Java ได แฟ มข อม ลนามสก ล.class และ อย ในเคร องผ ให บร การ เม อเคร องผ ขอใช บร การต องการ Run Program น ผ ขอบร การจะด งข อม ล.class จาก เคร องท ให บร การโดยผ านระบบอ นเตอร เน ต และนา.class มาทางานในเคร องของตน ด งภาพท 16.9 HelloWorld.class Hello World Server Client HelloWorld.class ภาพท 16.9 แสดงการด ง HelloWorld.class มาทางานในเคร อง Client เคร องขอใช บร การไม สามารถด งโปรแกรม Applet ได โดยตรงจากเคร องท ให บร การ แต ต องอาศ ย Web Browser ด งน นจ งต องสร างแฟ มข อม ลนามสก ล.html เพ อเป นแฟ มข อม ลระบ ถ งโปรแกรม Applet ท ต องการให ทางาน ร ปแบบของการเข ยนแฟ มข อม ล.html ค อ HelloWorld.html <HTML> <HEAD> <TITLE> Hello World Applet </TITLE> </HEAD> <BODY> <H1>This is an Applet </H1> <APPLET CODE="HelloWorld.class" WIDTH="200" HEIGHT="200"> </APPLET> </BODY> </HTML> ต วอย างโปรแกรม HelloWorld.java แสดงการเข ยนโปรแกรมชน ด Applet ซ งจะแสดงข อความ Hello World ทาง Web Browser import java.awt.*; import java.awt.event.*; import javax.swing.*; class MyPanel extends JPanel{ public void paintcomponent(graphics g) { super.paintcomponent(g); g.drawstring("hello World Applet", 50, 50); public class HelloWorld extends JApplet{ public void init() { getcontentpane().add(new MyPanel()); 334 การเข ยนโปรแกรมภาษา Java

จากต วอย างโปรแกรม HelloWorld ประกอบด วย 2 แฟ มข อม ลค อ HelloWorld.html และ HelloWorld.java เม อม การน าแฟ มข อม ล HelloWorld.java ผ านต วแปลภาษาเร ยบร อยแล วจะได แฟ มข อม ล HelloWorld.class และ จะถ กเร ยกใช งานผ าน HelloWorld.html ซ งม Tag <APPLET> ระบ ว าต องการเร ยกใช งาน HelloWorld.class และ ให แสดงความกว างเป น 200 Pixels ส ง 200 Pixels การทดสอบว าโปรแกรม HelloWorld ทางานได ม 2 ว ธ ค อ ใช Web Browser เช น Internet Explorer หร อ FireFox หร อ Google Chrome ซ งการใช งาน Browser น จ าเป นต องม การต ดต ง Java Plug-in ก อน การทดสอบโปรแกรมท าโดยเป ดแฟ มข อม ล HelloWorld.html ใน Web Browser โดยตรง ใช โปรแกรม appletviewer ซ งมาพร อมก บช ดโปรแกรม SDK1.4 ข นไป ว ธ ทดสอบท าได โดยใช ค าส ง appletviewer ท Command Prompt และตามด วยช อของแฟ มข อม ล Html เช น appletviewer HelloWorld.html ใช Internet Explorer ทดสอบ ใช โปรแกรม Appletviewer ทดสอบ ภาพท 16.10 แสดงภาพการใช Web Browser และโปรแกรม Appletviewer เพ อทดสอบโปรแกรม HelloWorld.java กฎการเปล ยนโปรแกรมท ใช JFrame ให เป น Applet โปรแกรมท เข ยนข นโดยใช GUI แบบ Swing สามารถเปล ยนเป น Applet ได ตามกฏต อไปน 1. สร างแฟ มข อม ล HTML ซ งม Tag <APPLET> ระบ ถ งโปรแกรมท ต องการให ทางาน 2. ลบค าส ง main() ท งไป และย ายค าส งต างๆ ใน main() ไปไว ในคลาสท extends JFrame แทนเน องจาก ค าส ง main() บรรจ ค าส งท ใช ในการสร าง JFrame แต เม อเปล ยนมาใช Applet ไม ต องระบ ค าส งท สร าง JFrame เพราะ Applet น นถ กสร างอ ตโนม ต โดย Web Browser 3. มองหาคลาสท ม การ extends JFrame และเปล ยนประโยค extends JFrame ให เป น extends JApplet และใช ส วนขยายหน าคลาสให เป น public และเปล ยนช อคลาสเป นของคลาสหล กท ตรงก บช อของ แฟ มข อม ลแทน การเข ยนโปรแกรมภาษา Java 335

4. ลบคาส ง setsize() หร อค าส ง setbounds() เน องจากขนาดของ Applet ถ กก าหนดโดยภาษา HTML เช น <APPLET CODE="HelloWorld.class" WIDTH="200" HEIGHT="200"> และค าส ง settitle() ด วย เพราะ Title ของ Applet ถ กระบ ใน HTML เช นก น และค าส งท เก ยวข องปร บขนาดของ JFrame ท งหมด รวมถ งค าส ง setdefaultcloseoperation(exit_on_close) ด วยเพราะโปรแกรม Applet จะถ กป ดเม อ ผ ใช งานป ด Web Browser ด งน นคาส งน จ งไม สามารถใช ใน Applet ได 5. เปล ยน Constructor ของคลาสท extends JApplet (จากข อท 3) ให เป น public void init() แทน โปรแกรม ShowCircle.java แสดงการเข ยนโปรแกรมในแบบ Application โดยใช JFrame ส วนโปรแกรม ShowCircleApplet.java แสดงว ธ การเปล ยนโปรแกรม ShowCicle.java ให แสดงเป น Applet ตามกฎท ง 5 ข อ import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; import javax.swing.event.*; //คลาส PaintPanel ใช ในการวาดร ปวงกลม class PaintPanel extends JPanel { public PaintPanel(String name) { setborder(borderfactory.createtitledborder(new EtchedBorder(), name) ); //Method ท ใช ในการวาดร ปวงกลม public void paintcomponent(graphics g) { super.paintcomponent(g); g.setcolor(color.red); g.filloval(20, 20, 80, 80); g.filloval(100, 50, 50, 50); g.filloval(50, 100, 30, 30); g.filloval(100, 100, 60, 60); class MyFrame extends JFrame { PaintPanel paintpanel; public MyFrame(int width, int height) { Toolkit tk = gettoolkit(); Dimension screen = tk.getscreensize(); setbounds( (screen.width - width)/2, (screen.height - height)/2, width, height); setdefaultcloseoperation(exit_on_close); settitle("show Circle"); / /สร าง JPanel สาหร บวาดวงกลม paintpanel = new PaintPanel("Paint"); getcontentpane().add(paintpanel, BorderLayout.CENTER); setvisible(true); public class ShowCircle { public static void main(string[] args) { MyFrame frame = new MyFrame(200, 200); 336 การเข ยนโปรแกรมภาษา Java

ภาพท 16.11 แสดงผลล พธ จากโปรแกรม ShowCircle.java โปรแกรม ShowCircleApplet.java แสดงการเปล ยนค าส งในโปรแกรม ShowCircle.java เพ อให แสดงได ใน Web Browser โดยส งเกตการเปล ยนแปลงได จากแทบท เป นส เข มในโปรแกรม ShowCircle.java import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; import javax.swing.event.*; // คลาส PaintPanel ใช ในการวาดร ปวงกลม class PaintPanel extends JPanel { public PaintPanel(String name) { setborder(borderfactory.createtitledborder(new EtchedBorder(), name) ); // Method ท ใช ในการวาดร ปวงกลม public void paintcomponent(graphics g) { super.paintcomponent(g); g.setcolor(color.red); g.filloval(20, 20, 80, 80); g.filloval(100, 50, 50, 50); g.filloval(50, 100, 30, 30); g.filloval(100, 100, 60, 60); public class ShowCircleApplet extends JApplet { PaintPanel paintpanel; public void init() { // สร าง JPanel สาหร บวาดวงกลม paintpanel = new PaintPanel("Paint"); getcontentpane().add(paintpanel, BorderLayout.CENTER); setvisible(true); การเข ยนโปรแกรมภาษา Java 337

ลาด บต อไปแสดง HTML ท ใช ในการเร ยก ShowCircleApplet.class ShowCircleApplet.html <HTML> <HEAD> <TITLE> Show Circle</TITLE> </HEAD> <BODY> <H1>This applet will draw circles to the screen</h1> <APPLET CODE="ShowCircleApplet.class" WIDTH="200" HEIGHT="200"> </APPLET> </BODY> </HTML> ภาพท 16.12 แสดงผลล พธ จากโปรแกรม ShowCircleApple.java ข อควรระว งเก ยวก บ Applet ข อจ ดก ดในการเข ยนโปรแกรม Applet ค อเร องของความปลอดภ ยของระบบ เน องจากการท างานของ Applet เก ดข นท เคร องของผ ขอบร การ เม อผ ใช งานเป ดหน าของเว บท ม Applet ผ ใช งานไม สามารถหย ดการท างาน ของ Applet ได เลย สมม ต โปรแกรม Applet ท างานเก ยวก บเร องแฟ มข อม ล โปรแกรม Applet ก สามารถลบ แฟ มข อม ลท งหมดท อย ในฮาร ดด กส หร ออ านข อม ลท เป นความล บและส งไปท เคร องคอมพ วเตอร อ นได ด งน นการ จาก ดความสามารถของโปรแกรม Applet เป นส งท หล กเล ยงไม ได ด งน โปรแกรม Applet ไม สามารถเร ยกโปรแกรมใดๆ ให ทางานได ในเคร องของผ ขอใช บร การ 338 การเข ยนโปรแกรมภาษา Java

โปรแกรม Applet ไม สามารถต ดต อส อสารผ านระบบเคร อข ายก บเคร องคอมพ วเตอร เคร องอ นได ยกเว น การต ดต อส อสารระหว างเคร องผ ให บร การท ม การด ง Applet มาทางานเท าน น โปรแกรม Applet ไม สามารถอ านหร อเข ยนข อม ลในเคร องของผ ขอใช บร การได เม อม การสร าง JFrame ใหม จาก Applet ทาให เก ด Pop-up Windows ข นแต จะม ข อความเต อนให ผ ใช งาน ทราบว า Pop-up Windows น ถ กสร างข นจาก Applet ว ธ การสร างโปรแกรมซ งสามารถทางานได เป น Application และ Applet java.awt.panel java.applet.applet javax.swing.japplet เม อพ จารณาการ Inherit ของคลาส JApplet แล วจะเห นว า JApplet เป น Panel ด งน น JApplet สามารถ ถ กเพ มลงใน JFrame ได เพ อให โปรแกรมสามารถท างานได ท ง Application และ Applet โดยเพ มค าส งลงใน Method main() ในกรณ ท เร ยกโปรแกรมจาก Web Browser ค าส ง main() จะไม ถ กเร ยกใช งาน แต เม อส งให โปรแกรมทางานโดยใช Command Prompt คาส ง main() จะถ กเร ยกใช งาน โปรแกรม ShowCircleAppAndApplet.html และ ShowCircleAppAndApplet.java แสดงโปรแกรมท สามารถทางานได ท ง Application และ Applet โดยไม ต องม การแก ไขโปรแกรม import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; import javax.swing.event.*; // คลาส PaintPanel ใช ในการวาดร ปวงกลม class PaintPanel extends JPanel { public PaintPanel(String name) { setborder(borderfactory.createtitledborder(new EtchedBorder(), name) ); // Method ท ใช ในการวาดร ปวงกลม public void paintcomponent(graphics g) { super.paintcomponent(g); g.setcolor(color.red); g.filloval(20, 20, 80, 80); g.filloval(100, 50, 50, 50); g.filloval(50, 100, 30, 30); g.filloval(100, 100, 60, 60); public class ShowCircleAppAndApplet extends JApplet { PaintPanel paintpanel; public void init() { // สร าง JPanel สาหร บวาดวงกลม paintpanel = new PaintPanel("Paint"); getcontentpane().add(paintpanel, BorderLayout.CENTER); การเข ยนโปรแกรมภาษา Java 339

setvisible(true); // เพ ม Method main() public static void main(string[] args) { // สร างว ตถ ของคลาสเพ อใช ใน JFrame ShowCircleAppAndApplet applet = new ShowCircleAppAndApplet(); JFrame frame = new JFrame("Run programe both application and applet"); // เพ ม applet ใน JFrame frame.getcontentpane().add(applet, BorderLayout.CENTER); frame.setsize(200,200); // เร ยก init() ด วยเพ อให applet เร มทางาน applet.init(); frame.setvisible(true); ต อไปแสดง HTML ท ใช ในการเร ยก ShowCircleAppAndApplet.class ShowCircleAppAndApplet.html <HTML> <HEAD> <TITLE> Show Circle</TITLE> </HEAD> <BODY> <H1>This applet will draw circles to the screen</h1> <APPLET CODE="ShowCircleAppAndApplet.class" WIDTH="200" HEIGHT="200"> </APPLET> </BODY> </HTML> การเข ยนโปรแกรมให ท างานได ท ง Application และ Applet ช วยเพ มความย ดหย นของโปรแกรม ถ า โปรแกรมน ใช งานเป น Application มาก อน และเม อม ความต องการให สามารถใช โปรแกรมน ผ าน Web Browser ได ด วย โดยผ เข ยนโปรแกรมก ไม จาเป นไม ต องแก ใขโปรแกรมเลยแม แต บรรท ดเด ยว 340 การเข ยนโปรแกรมภาษา Java

สร ป ภาษา Java ม GUI Component ส าเร จภาพท ช วยในการเข ยนโปรแกรมได เร วข น ต วอย างเช น JColorChooser หร อ JFileChooser เป นคลาสท แสดง GUI ส าเร จร ป ผ เข ยนโปรแกรมเร ยกใช งานคลาสเหล าน ได ท นท ซ งเป น GUI มาตราฐานท น ยมใช JInternalFrame อน ญาตให ผ เข ยนโปรแกรมสามารถสร าง Multiwindow ใน JFrame ได เหม อนโปรแกรม Microsoft Word ซ งผ ใช งานสามารถเป ดเอกสารทางานได หลายเอกสารในโปรแกรมเด ยว ส วน JOptionPane ช วยแสดง Dialog ทางจอภาพ ผ เข ยนโปรแกรมสามารถใช JOptionPane ช วยในการ แสดงข อความส นๆ คาเต อน หร อ ร บข อม ลจากผ ใช งานได Applet เป นโปรแกรมท ท างานอย ทางฝ งของเคร องขอใช บร การเป นหล ก เพ อลดการประมวลผลท เคร อง ให บร การ ส งผลให ระบบโดยรวมท างานได ด ข น Applet ใช ค ก บ Web Browser โดยท ในโปรแกรม Web Browser ต องต ดต ง Plug-in Java ก อน จ งสามารถแสดง Applet ได การใช งาน Applet ม ความน ยมมากข นตามความน ยมใช งานระบบอ นเตอร เน ต เน องจากผ ใช งานสามารถ ท างานผ านระบบเว บได ข อด ของการใช Applet ในการสร าง Web Site ค อการตอบโต ก บผ ใช งานแบบท นท (Realtime Response) ต วอย างของ Applet เช นโปรแกรมด การซ อขายห นออนไลน หร อ การเล นเกมออนไลน เป น ต น ในเร องส ดท ายของบทน กล าวถ งว ธ การเข ยนโปรแกรมให สามารถท างานเป นท ง Application และ Applet ซ งเป นการเพ มความสามารถของโปรแกรม ให ทางานภายใต ท กสภาพแวดล อม เช น โปรแกรมสามารถใช ในองค กร เป น Application หร อสามารถใช โปรแกรมเด ยวก นผ านเว บเป น Applet ได ท นท โดยท ไม ต องแก ไขโปรแกรมเลย การเข ยนโปรแกรมภาษา Java 341

แบบฝ กห ดท ายบทท 16 1. อธ บายการสร าง JInternalFrame 2. Look and Feel ค ออะไร 3. อธ บายว ธ การเข ยนโปรแกรมให สามารถทางานเป นท ง Application และ Applet 4. อธ บายข อจาก ดของการใช งาน Applet Programming Problems 1. จงเข ยนโปรแกรมเล ยนแบบ NotePad แต ให สามารถทางานได หลายหน าต างโดยใช JInternalFrame 2. จงเข ยนเกมโอเอกซ ให ทางานบน Web Browser 342 การเข ยนโปรแกรมภาษา Java