Java AWT

3,170 views

Published on

1 Comment
2 Likes
Statistics
Notes
  • ขอบคุณ อาจารย์ที่ทำ slide ดีๆให้นะครับ ถึงผมจะไม่ได้เรียนในชั้นเรียนก้สามารถเข้าใจได้
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
3,170
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
120
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Java AWT

  1. 1. บทท 5 การสรางสวนตดตอกบผใชแบบกราฟฟก (Build Graphical User Interface)
  2. 2. วตถประสงค"  แนะน%&ส'วนประกอบท,-ส%&คญของ JFC (Java Foundation Class)  แนะน%&คล&สและอ7นเตอร"เฟสท,-ส%&คญในแพคเก<จ java.awt  น7ย&มคว&มหม&ยของตวใส'สวนประกอบกร&ฟฟAก (Container) ส'วน ' ประกอบกร&ฟฟAก (Graphical Component) และรCปแบบก&รจดว&งผง (Layout Manager)  แนะน%&คล&สท,เปJนตวใส'ส'วนประกอบกร&ฟฟAก และคล&สท,-เปJนส'วน - ประกอบกร&ฟฟAกแบบต'&งๆ  อธ7บ&ยว7ธก&รใส'ส'วนประกอบกร&ฟฟAกลงในตวใส'สวนประกอบกร&ฟฟAก , '  แนะน%&ว7ธก&รจดว&งผงแบบ FlowLayout,BorderLayout , และ GridLayout
  3. 3. วตถประสงค"  อธ7บ&ยก&รสรM&งเมนCโดยใชMคล&สในแพคเก<จ java.awt  อธ7บ&ยก&รจดก&รกบรCปแบบของตวอกขระ ส, และก&รจดก&รกบคณ ลกษณะอR-นๆของส'วนประกอบกร&ฟฟAก  อธ7บ&ยก&รจดว&งผง GUI ท,-ม,คว&มซบซMอน  แนะน%&แพคเก<จ javax.swing และคล&สต'&งๆท,-ม,อยC'ในแพคเก<จ
  4. 4. Java Foundation Class  ระบบปฏ7บต7ก&รส'วนใหญ'จะม,ส'วนต7ดต'อกบผCMใชMเปJนแบบกร&ฟฟAก (Graphical User Interface เร,ยกย'อว'& GUI) ทUงน,เนR-องจ&กใชMง&นง'&ยกว'& U  ภ&ษ&จ&ว&จะสนบสนนก&รพฒน&โปรแกรม GUI ท,ส&ม&รถใชMง&นไดMหล&ย - แพลตฟอร"ม โดยจะใชMชดค%&ส-งเด,ยวกน  Java Foundation Class (JFC) ประกอบดMวยแพคเก<จต'&งๆดงน,U • Abstract Window Toolkit (AWT) • Swing • Java 2D • Accessibility • Drag and Drop
  5. 5. รCปแสดงส'วนประกอบท,ส%&คญของ JFC -
  6. 6. AWT  แพคเก<จ AWT ประกอบดMวยคล&สต'&งๆท,-เปJนประเภทส'วนประกอบกร&ฟฟAก (graphical component) เพRอน%&ไปใชMในก&รพฒน&โปรแกรม GUI -  แพคเก<จ AWT จะช'วยในก&รสรM&งโปรแกรม GUI ประเภท look and feel ท,- ขbนอยCกบแพลตฟอร"มท,ใชMง&น U ' -  ภ&ษ&จ&ว&ไดMก%&หนดแพคเก<จ AWT ขbUนไวMตงแต'โปรแกรมจ&ว&เวอร"ช-นแรก U (JDK 1.0) โดยอยC'ในแพคเก<จท,ชR-อ java.awt -  แพคเก<จ AWT จะประกอบไปดMวยคล&สและอ7นเตอร"เฟสต'&งๆเพR-อใชMในก&ร พฒน&โปรแกรม GUI
  7. 7. AWT  ในแพจเกจ java.awt ม,คลาสและอ7นเตอร"เฟสท,-ส"าคญดงน,U • Component • Container • LayoutManager (อ7นเตอร"เฟส) • Graphics • Color • Font • AWTEvent
  8. 8. รCปแสดงส'วนประกอบท,-ส&คญของ AWT %
  9. 9. คลาส Component  ก&รเข,ยนโปรแกรม GUI นUนจะเปJนก&รสรM&งออปเจ<คต'&งๆท,-เปJนออปเจ<ค ของคล&สท,เปJนส'วนประกอบกร&ฟฟAก -  คล&สท,-เปJนส'วนประกอบกร&ฟฟAกจะสRบทอดม&จ&กคล&สท,-ชR-อ Component  คล&สท,-เปJน subclass ของคล&ส Component จะแบ'งเปJนสองกล'มคRอ • คล&สท,-เปJนคล&สประเภท Container เปJนคล&สท,ใชMในก&รใส'สวนประกอบกร&ฟฟAก - ' ต'&งๆ • คล&สท,-เปJนส'วนประกอบกร&ฟฟAกอR-นๆ อ&ท7เช'น Button,Choice และ List เปJนตMน
  10. 10. รCปแสดงคลาสทสRบทอดม&จ&กคล&ส Component
  11. 11. คล&สประเภท Container  โปรแกรม GUI จะตMองม,ก&รสรM&งออปเจ<คของคล&สประเภท Container อย'&ง นMอยหนbงออปเจ<คขbUนม&ก'อน เพR-อใชMในก&รใส'ออปเจ<คของคล&สท,-เปJนส'วน - ประกอบกร&ฟฟAกอR-นๆ  คล&สประเภท Container ท,-อยCในแพคเก<จ AWT ม,ดงน,U ' • Frame • Panel • Dialog • Applet  คล&สประเภท Container เปJนคล&สท,-สRบทอดม&จ&กคล&สท,-ชR-อ Component
  12. 12. คล&ส Container  คล&สท,-ชR-อ ContainerเปJนคล&สแบบ abstract ซb-งเร&ไม'ส&ม&รถท,-จะ สรM&งออปเจ<คของคล&สดงกล'&วไดM แต'จะตMองสรM&งออปเจ<คของคล&สอR-นๆท,- สRบทอดม&จ&กคล&สท,ชR-อ Container แทน -  คล&สท,-ชR-อ Container จะม,เมธอดท,ชR-อ add()ท,-ใชMในก&รใส'ส'วนประกอบ - กร&ฟฟAกอR-นๆ เมธอดน,จะม,รปแบบท,ส%&คญดงน,U U C - • void add (Component c) • void add (Component c,int position)
  13. 13. คลาส Frame  เป$นคลาสทส%บทอดมาจากคลาสท,ชR-อ Window -  ออปเจ<คของคล&ส Frame จะประกอบดMวย title bar, resizable corner, icon และ menu bar
  14. 14. คลาส Frame  คล&ส Frame จะม,รปแบบของ constructor ท,ส%&คญดงน,U C - • public Frame() • public Frame(String title)  คล&ส Frame จะม,เมธอดท,เก,-ยวขMองกบก&รปรบขน&ดของเฟรมดงน,U - • boolean isResizable() • void setResizable(boolean canResize)
  15. 15. ตวอยางโปรแกรมแสดง Frame import java.awt.*; public class FrameSample { private Frame fr; public void init() { fr = new Frame("Frame Sample"); fr.setSize(200,150); fr.show(); } ผลลพธ"ทไดMจ&กก&รรนโปรแกรม ,- public static void main(String args[]) { FrameSample obj = new FrameSample(); obj.init(); } }
  16. 16. อธ7บ&ยตวอยางโปรแกรม  ค"าสง fr = new Frame(“Frame Sample”); เป$นค"าสงท,-ใชMในก&ร สรางออปเจคของคล&ส Frame  เมธอด setSize()เป$นเมธอดทใชในการก"าหนดขนาดของ Frame  เมธอด show() เป$นเมธอดท,-ใชMในก&รแสดง Frame ท,-สรM&งไวM
  17. 17. คลาส Button  Button เปJนคล&สท,ใชMในก&รสรM&งออปเจ<คท,-แสดงเปJนปiม โดยจะม, - ขMอคว&ม (label) ปร&กฎอยC'บนปiม  Button เปJนคล&สท,สRบทอดม&จ&กคล&สท,-ชR-อ Component -  Constructor ของคล&ส Button ม,รปแบบดงน,U C • public Button() • public Button(String label)  เมธอดท,-ส%&คญในก&รจดก&รกบขMอคว&มม,ดงน,U • public void setLabel(String label) • public String getLabel()
  18. 18. ตวอยางโปรแกรมแสดง Frame ท,-ม, Button import java.awt.*; public class ButtonSample { private Frame fr; private Button bn1; public void init() { fr = new Frame("Button Sample"); bn1 = new Button("Submit"); fr.add(bn1); fr.setSize(200,150); ผลลพธ"ทไดMจ&กก&รรนโปรแกรม ,- fr.show(); } public static void main(String args[]) { ButtonSample obj = new ButtonSample(); obj.init(); } }
  19. 19. ก&รจดว&งผงของส'วนประกอบกร&ฟฟAก  โปรแกรม GUI ของภ&ษ&จ&ว&จะจดว&งส'วนประกอบกร&ฟฟAกต'&งๆลงใน ออปเจ<คของคล&สประเภท Container โดยอตโนมต7  LayoutManager เปJนอ7นเตอร"เฟสท,ใชในก&รก%&หนดว7ธก&รจดว&งผงส'วน - , ประกอบกร&ฟฟAก  คล&สท,- implements อ7นเตอร"เฟสท,-ชR-อ LayoutManager เพR-อใชMเปJนตว จดว&งผงของส'วนประกอบกร&ฟฟAกม,ทUงหมด 5 คล&สคRอ • BorderLayout • FlowLayout • GridLayout • CardLayout • GridBagLayout  เมธอดท,-ชR-อ setLayout() ใชMในก&รก%&หนดก&รว&งผง
  20. 20. BorderLayout  Frame โดยทวไปจะถCกก%&หนดใหMมตวจดว&งผงเป$นแบบ BorderLayout ,  Frame ท,ม,ตวจดว&งผงเปJนแบบ BorderLayout จะท%&ใหMสามารถวางสวน - ประกอบกราฟฟกไดมากทส/ด 5 ออปเจ<คตามต"าแหนงทศตางๆของ Frame ค%อ ทศเหน%อ (NORTH) ทศใต (SOUTH) ทศตะวนออก (EAST) ทศตะวน ตก (WEST) และตรงกลาง (CENTER)  ใชค"าสง new BorderLayout() ในการสรางตวจดวางผงแบบน2
  21. 21. BorderLayout  ค"าสงในการใสสวนประกอบกราฟฟกค%อเมธอด add() แตจะตองมการระบ/ ต"าแหนงทศทตองการวางสวนประกอบ  ตวอย'&งเชน fr.add(bn1,BorderLayout.NORTH)  หากไมระบ/ต"าแหนงทศ สวนประกอบจะถCกใสไวตรงกลาง
  22. 22. ตวอยางโปรแกรม import java.awt.*; public class BorderLayoutSample { private Frame fr; private Button bn1, bn2, bn3, bn4, bn5; public void init() { fr = new Frame("Button Sample"); bn1 = new Button("B1"); bn2 = new Button("B2"); bn3 = new Button("B3"); bn4 = new Button("B4"); bn5 = new Button("B5"); fr.add(bn1,BorderLayout.NORTH); fr.add(bn2,BorderLayout.SOUTH); fr.add(bn3,BorderLayout.EAST);
  23. 23. ตวอยางโปรแกรม fr.add(bn4,BorderLayout.WEST); fr.add(bn5,BorderLayout.CENTER); fr.setSize(200,150); fr.show(); } public static void main(String args[]) { BorderLayoutSample obj = new BorderLayoutSample(); obj.init(); } } ผลลพธ"ทไดMจ&กก&รรนโปรแกรม ,-
  24. 24. FlowLayout  ตวจดว&งผงแบบ FlowLayout จะจดวางผงสวนประกอบกราฟฟกจากซาย ไปขวา  ถาความกวางของ Contanier ไมพอ ตวจดว&งผงจะน"าสวนประกอบกราฟฟก ทเหล%อลงไปในต"าแหนงถดไปดานลาง  Frame ส&ม&รถใชตวจดวางผงแบบน2ไดM โดยเรยกใชMเมธอด setLayout() แลวสรางตวจดวางผงโดยใชค"าสง new FlowLayout() ดงน,U fr.setLayout(new FlowLayout());
  25. 25. ตวอยางโปรแกรม import java.awt.*; public class FlowLayoutSample { private Frame fr; private Button bn1, bn2, bn3; public void init() { fr = new Frame("Button Sample"); fr.setLayout(new FlowLayout()); bn1 = new Button("Submit"); bn2 = new Button("Cancel"); bn3 = new Button("Exit"); fr.add(bn1); fr.add(bn2); fr.add(bn3);
  26. 26. ตวอยางโปรแกรม fr.setSize(200,150); fr.show(); } public static void main(String args[]) { FlowLayoutSample obj = new FlowLayoutSample(); obj.init(); } } ผลลพธ"ทไดMจ&กก&รรนโปรแกรม ,-
  27. 27. GridLayout  จะแบง Container เป$นชองยอยๆขนาดเทากน  Frame สามารถใชMตวจดวางผงแบบน2ได โดยเร,ยกใชMเมธอด setLayoutแลวสรางตวจดวางผงโดยใชค"าสง new GridLayout(row,col) ซb-งจะตองระบ/จ"านวนแถวและคอลมน4ทตองการ แบงชองยอยดMวย ดงน,U fr.setLayout(new GridLayout(3,2)); • จะแบง Container เป$น 6 ชองยอย ทม 3 แถวๆละ 2 คอลมน4  ใชเมธอด add() ในการใสสวนประกอบกราฟฟกลงในแตละชองยอย โดยจะ ใสเรยงจากซายไปขวาและบนลงลาง
  28. 28. ตวอยางโปรแกรม import java.awt.*; public class GridLayoutSample { private Frame fr; private Button bn1, bn2, bn3, bn4, bn5; public void init() { fr = new Frame("Button Sample"); fr.setLayout(new GridLayout(3,2)); bn1 = new Button("B1"); bn2 = new Button("B2"); bn3 = new Button("B3"); bn4 = new Button("B4"); bn5 = new Button("B5");
  29. 29. ตวอยางโปรแกรม fr.add(bn1); fr.add(bn2); fr.add(bn3); fr.add(bn4); fr.add(bn5); fr.pack(); fr.setVisible(true); } public static void main(String args[]) { GridLayoutSample obj = new GridLayoutSample(); obj.init(); } } ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม
  30. 30. ค"าอธบายโปรแกรม  ค"าสง fr.pack(); • จะปรบขนาดทเหมาะสมใหกบ Frame fr.setVisible(true); • เป$นการแสดง Frame เชนเดยวกบเมธอด show()
  31. 31. สวนประกอบกราฟฟกทส"าคญในแพคเก<จ AWT  Button  Label  TextField  TextArea  Checkbox  Choice  List  Canvas
  32. 32. คล&ส Label  ค%อสวนประกอบกราฟฟกทใชแสดงขอความยาวหน6งบรรทด ซb-งผCMใชMไม' ส&ม&รถปrอนขMอคว&มเขM&ไปไดM  Constructor ของคล&ส Label ท,-ส%&คญม,ดงน,U • public Label(String text) • public Label(String text,int align)  เราสามารถทจะก"าหนดหร%อเปลยนขอความของ Label ไดโดยเรยกใช เมธอด setText(String text)
  33. 33. คล&ส TextField  ค%อสวนประกอบกราฟฟกเพ%อใหผใชป7อนขอความยาวหน6งบรรทดได  Constructor ของคล&ส TextField ท,ส%&คญม,ดงน,U - • public TextField() • public TextField(int col) • public TextField(String text) • public TextField(String text, int col)  เราสามารถทจะก"าหนดหร%อเปลยนขอความโดยใช เมธอดsetText(String text)  เมธอด setEditable(boolean b)เปJนเมธอดท,ใชMเพRอก"าหนดให - - TextField สามารถอานไดอยางเดยว โดยจะตMองม,ก&รส'ง argument เป$น false
  34. 34. ตวอยางโปรแกรม import java.awt.*; public class TextFieldDemo { private Frame fr; private Label l; private TextField tf; public void init() { fr = new Frame("TextField Demo"); l = new Label("Name: "); tf = new TextField("Thanisa", 15); fr.setLayout(new FlowLayout());
  35. 35. ตวอยางโปรแกรม fr.add(l); fr.add(tf); fr.pack(); fr.show(); } public static void main(String args[]) { TextFieldDemo obj = new TextFieldDemo(); obj.init(); } } ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม
  36. 36. คล&ส TextArea  ค%อสวนประกอบกราฟฟกเพ%อใหผใชป7อนขอความได และส&ม&รถมจ"านวน บรรทดไดหลายบรรทดตามทระบ/  Constructor ของคล&ส TextArea ท,-ส%&คญม,ดงน,U • public TextArea() • public TextArea(String str) • public TextArea(int row,int col) • public TextArea(String str,int row,int col) • public TextArea(String str,int row,int col,int scrollbar)
  37. 37. ตวอยางโปรแกรมแสดง TextArea import java.awt.*; public class TextAreaDemo { private Frame fr; private TextArea ta; public void init() { fr = new Frame("TextArea Demo"); ta = new TextArea("Text Area",5,10); fr.setLayout(new FlowLayout()); fr.add(ta); fr.setSize(200,150); fr.setVisible(true); ผลลพธ"ทไดMจ&กก&รรนโปรแกรม ,- } public static void main(String args[]) { TextAreaDemo obj = new TextAreaDemo(); obj.init(); } }
  38. 38. คล&ส Checkbox และ CheckboxGroup  ค%อสวนประกอบกราฟฟกทใหผใชเล%อกหร%อไมเล%อกชองตางๆได โดย ส&ม&รถเลRอกไดMหล&ยช'องพรMอมๆกน  มขอความ (Label) อยขางๆ  Constructor ของคล&ส Checkbox ท,ส%&คญม,ดงน,U - • public Checkbox(String label) • public Checkbox(String label, boolean state)  ถM&ตMองก&รใหMอยC'ในรCปแบบของ radio button ซbงจะส&ม&รถเลRอกไดMเพ,ยง 1 - ช'องเท'&นUน จะตMองระบ/ใหออปเจคของคล&ส Checkbox อยในกล/มของ ออปเจคของคล&ส CheckboxGroup
  39. 39. ตวอยางโปรแกรมแสดง Checkbox import java.awt.*; public class CheckboxDemo { public static void main(String args[]) { Frame fr = new Frame("Checkbox Demo"); Checkbox c1 = new Checkbox("Visual Basic"); Checkbox c2 = new Checkbox("C++",false); Checkbox c3 = new Checkbox("Java",true); fr.setLayout(new FlowLayout()); fr.add(c1); fr.add(c2); fr.add(c3); fr.pack(); fr.show(); ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม } }
  40. 40. ตวอยางโปรแกรมแสดง CheckboxGroup import java.awt.*; public class CheckboxGroupDemo { public static void main(String args[]) { Frame fr = new Frame("CheckboxGroup Demo"); CheckboxGroup cg = new CheckboxGroup(); Checkbox c1 = new Checkbox("One", true,cg); Checkbox c2 = new Checkbox("Two", false,cg); Checkbox c3 = new Checkbox("Three", cg, true); fr.setLayout(new GridLayout(3,1)); fr.add(c1); fr.add(c2); ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม fr.add(c3); fr.pack(); fr.show(); } }
  41. 41. คล&ส Choice  คล&ส Choice เปJนคล&สท,ใชMในก&รสรM&งออปเจ<คท,-เปJนร&ยก&รใหMผCMใชM - ส&ม&รถเลRอกไดM  คล&ส Choice จะแสดงร&ยก&รปร&กฏใหMเห<นเฉพ&ะร&ยก&รท,เลRอกเพ,ยง - ร&ยก&รเด,ยว แต'จะแสดงร&ยก&รทUงหมดห&กม,ก&รคล7กเม&ส"  Constructor ของคล&ส Choice ท,ส%&คญม,ดงน,U - • public Choice()  เมธอด addItem() เป$นเมธอดทใชส"าหรบใสรายการลงในออปเจค choice  เมธอด select(int pos) หร%อ select(String str) เปJนเมธอดท,- ใชMในก&รเล%อกใหแสดงรายการทต"าแหนงหร%อขอความใดขอความหน6งได
  42. 42. ตวอยางโปรแกรมแสดง Choice import java.awt.*; public class ChoiceDemo { public static void main(String args[]) { Frame fr = new Frame("Choice Demo"); Choice c = new Choice(); c.addItem("New Zealand"); c.addItem("Thailand"); c.addItem("USA"); ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม c.add("Japan"); c.select("Thailand"); fr.add(c); fr.pack(); fr.show(); } }
  43. 43. คล&ส List  List เป$นคลาสทใชสรางออปเจคทเป$นสวนประกอบกราฟฟกเพ%อใหผใช สามารถเล%อกรายการคลายกบ Choice แตจะแตกตางกนตรงท List จะ แสดงรายการหลายรายการตามจ"านวนแถวทระบ/  Constructor ของคล&ส List ท,ส%&คญม,ดงน,U - • public List() • public List(int row) • public List(int row,boolean multipleMode)  เมธอด add()เป$นเมธอดทใชในการใสรายการลงไปในออปเจคของคล&ส List
  44. 44. ตวอยางโปรแกรมแสดง List import java.awt.*; public class ListDemo { private Frame fr; private List l; public void init() { fr = new Frame("List Demo"); l = new List(3,true); l.add("One"); ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม l.add("Two"); l.add("Three"); fr.add(l); fr.pack(); fr.setVisible(true); } public static void main(String args[]) { ListDemo obj = new ListDemo(); obj.init(); }
  45. 45. ก&รสรM&งเมนC  เมนCเปJนออปเจ<คของคล&สท,สRบทอดม&จ&กคล&สท,-ชR-อ MenuComponent -  คล&สท,-สบทอดม&จ&กคล&ส MenuComponent ท,ส%&คญม,ดงน,U R - • MenuBar เปJนคล&สท,ใชMในก&รสรM&งออปเจ<คท,เก<บกล'มของออปเจ<คของคล&ส - - Menu ซb-งจะปร&กฏเปJนแถบเมนCโดยออปเจ<คของคล&สน,UจะตMองม,ออปเจ<คของคล&ส Frame ท,คC'กน - • Menu เปJนคล&สท,ใชMในก&รสรM&งออปเจ<คท,เก<บกล'มของออปเจ<คของคล&ส - - MenuItem และตวแยกร&ยก&ร (separator) • MenuItem เปJนคล&สท,ใชMในก&รสรMรM &งออปเจ<คท,เปJนร&ยก&ร - - • CheckboxMenuItem เปJนคล&สท,ใชMในก&รสรM&งออปเจ<คท,เปJนร&ยก&รโดยจะม, - - เครR-องหม&ยถCกท,จะแสดงขbUนเมR-อร&ยก&รน,UถCกเลRอก -
  46. 46. รCปแสดงคล&สท,-สRบทอดม&จ&กคล&ส MenuComponent
  47. 47. คล&ส MenuBar  คRอแถบของเมนทจะอยCตรงส'วนบนของคล&สประเภท Container เช'น ' Frame (ระบบปฏบตการบางประเภทอาจจะไมแสดงแถบของเมน หากไมม รายการในเมน)  Constructor ของคล&ส MenuBar ท,ส%&คญม,ดงน,U - • public MenuBar()  เราสามารถทจะใสออปเจคของคล&ส MenuBar ลงใน Container ไดโดยใช เมธอด setMenuBar()  คลาส MenuBar ส%บทอดมาจากคลาส MenuComponent
  48. 48. ตวอยางโปรแกรมแสดง MenuBar import java.awt.*; public class MenuBarDemo { private Frame fr; private MenuBar mb; public void init() { fr = new Frame("MenuBar Demo"); mb = new MenuBar(); fr.setMenuBar(mb); fr.setSize(200,150); ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม fr.setVisible(true); } public static void main(String args[]) { MenuBarDemo md = new MenuBarDemo(); md.init(); } }
  49. 49. คล&ส Menu  คRอรายการทแสดงบนแถบของเมน  Constructor ของคล&ส Menu ท,ส%&คญม,ดงน,U - • public Menu() • public Menu(String label) • public Menu(String label,boolean tearOff)  เราสามารถก"าหนดหร%อเปลยนช%อรายการในออปเจคของคล&ส Menu โดย ใชเมธอด setLabel(String label)  เมธอด add() ในคลาส MenuBar ใชในการใสออปเจคของคล&ส Menu ลง ไปในออปเจ<คของคล&ส MenuBar แต'ถM&ออปเจคของคล&ส Menu เป$น รายการ Help เราจะใชเมธอด setHelpMenu() ในการใสออปเจคแทน
  50. 50. ตวอยางโปรแกรมแสดง Menu import java.awt.*; public class MenuDemo { private Frame fr; private MenuBar mb; private Menu m1,m2,m3,m4; public void init() { fr = new Frame("Menu Demo"); mb = new MenuBar(); m1 = new Menu("File"); m2 = new Menu("Edit"); m3 = new Menu("View"); m4 = new Menu("Help");
  51. 51. ตวอยางโปรแกรมแสดง Menu fr.setMenuBar(mb); mb.add(m1); mb.add(m2); mb.add(m3); ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม mb.setHelpMenu(m4); fr.setSize(200,150); fr.setVisible(true); } public static void main(String args[]) { MenuDemo mm = new MenuDemo(); mm.init(); } }
  52. 52. คล&ส MenuItem  ค%อรายการยอยทอยในออปเจคของคล&ส Menu  Constructor ของคล&ส MenuItem ท,-ส%&คญม,ดงน,U • public MenuItem() • public MenuItem(String label) • public MenuItem(String label,MenuShortcut s)  เราสามารถทจะใสออปเจคของคล&ส MenuItem ลงไปในออปเจคของ คล&ส Menu ไดMโดยใชเมธอด add()  เราสามารถทจะก"าหนด Shortcut ของรายการทอยในออปเจคของ คล&สMenuItem ไดMโดยใชMออปเจ<คของคล&ส MenuShortcut  Constructor ของคล&ส MenuShortcut ท,ส%&คญม,ดงน,U - • public MenuShortcut(int key)
  53. 53. ขUนตอนการสรางเมนC  สรางออปเจคของคล&ส MenuBar แลวใสลงไปในออปเจคของคล&ส ประเภท Container เชน Frame  สรางออปเจคของคล&ส Menu แลวใสลงไปในออปเจคของคล&ส MenuBar โดยท,ส&ม&รถสรM&งออปเจ<คของคล&ส Menu ไดMม&กกว'&หน6ง - ออปเจค  สรางออปเจคของคล&ส MenuItem แลวใสลงไปในออปเจคของคล&ส Menu โดยท,-ส&ม&รถสรM&งออปเจ<คของคล&ส MenuItem ไดMม&กกว'&หน6ง ออปเจค
  54. 54. ตวอยางโปรแกรมแสดง MenuItem import java.awt.*; public class MenuItemDemo { private Frame fr; private MenuBar mb; private Menu m1,m2,m3,m4; private MenuItem mi1,mi2,mi3,mi4; private MenuShortcut ms1; public void init() { fr = new Frame("MenuItem Demo"); mb = new MenuBar(); m1 = new Menu("File"); m2 = new Menu("Edit"); m3 = new Menu("View"); m4 = new Menu("Help"); fr.setMenuBar(mb); mb.add(m1); mb.add(m2); mb.add(m3); mb.setHelpMenu(m4);
  55. 55. ตวอยางโปรแกรมแสดง MenuItem char key = 'N'; ms1 = new MenuShortcut(key); mi1 = new MenuItem("New",ms1); mi2 = new MenuItem("Open"); mi3 = new MenuItem("Save"); mi4 = new MenuItem("Exit"); m1.add(mi1); m1.add(mi2); m1.addSeparator(); m1.add(mi3); m1.addSeparator(); ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม m1.add(mi4); fr.setSize(200,200); fr.setVisible(true); } public static void main(String args[]) { MenuItemDemo mid= new MenuItemDemo(); mid.init(); } }
  56. 56. คล&ส CheckboxMenuItem  ค%อรายการเมนทมเคร%องหมายระบ/วารายการน2ถกเล%อก  Constructor ของคล&ส CheckboxMenuItem ท,ส%&คญม,ดงน,U - • public CheckboxMenuItem() • public CheckboxMenuItem(String label) • public CheckboxMenuItem(String label,boolean state)  เราสามารถทจะเปลยนสถานะของออปเจคชนด CheckboxMenuItem ไดM โดยใชเมธอด setState(boolean b)
  57. 57. ตวอยางโปรแกรมแสดง CheckboxMenuItem import java.awt.*; public class CheckboxMenuDemo { private Frame fr; private MenuBar mb; private Menu m1,m2,m3; private MenuItem mi; private CheckboxMenuItem cbm; public void init() { fr = new Frame("CheckboxMenuItem Demo"); mb = new MenuBar(); m1 = new Menu("File"); m2 = new Menu("Edit"); m3 = new Menu("View"); fr.setMenuBar(mb); mb.add(m1); mb.add(m2); mb.add(m3);
  58. 58. ตวอยางโปรแกรมแสดง CheckboxMenuItem mi = new MenuItem("Toolbars"); cbm = new CheckboxMenuItem("Status Bar", true); m3.add(mi); m3.add(cbm); fr.setSize(200,200); fr.setVisible(true); } public static void main(String args[]) { CheckboxMenuDemo obj= new CheckboxMenuDemo(); obj.init(); } } ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม
  59. 59. ขUนตอนการสรางเมนCย'อย  สรางออปเจคของคล&ส MenuBar แลวใสลงไปในออปเจคของคล&ส ประเภท Container เชน Frame  สรางออปเจคของคล&ส Menu แลวใสลงไปในออปเจคของคล&ส MenuBar  สรางออปเจคของคล&ส Menu ส%&หรบเปJนเมนCยอย แลวใสลงไปในออปเจค ' ของคล&ส Menu ท,เปJนเมนCหลก -  สรางออปเจคของคล&ส MenuItem แลวใสลงไปในออปเจคของคล&ส Menu ท,-เปJนเมนCยอย '
  60. 60. ตวอยางโปรแกรมแสดงเมนCยอย ' import java.awt.*; public class SubMenuDemo { private Frame fr; private MenuBar mb; private Menu m1,m2,m3, ms1; private MenuItem mi2,mi3,mi4, msi1, msi2; public void init() { fr = new Frame("SubMenuItem Demo"); mb = new MenuBar(); m1 = new Menu("File"); m2 = new Menu("Edit"); m3 = new Menu("View"); fr.setMenuBar(mb); mb.add(m1); mb.add(m2); mb.add(m3);
  61. 61. ตวอยางโปรแกรมแสดงเมนCยอย ' ms1 = new Menu("New"); mi2 = new MenuItem("Open"); mi3 = new MenuItem("Save"); mi4 = new MenuItem("Exit"); m1.add(ms1); m1.add(mi2); m1.addSeparator(); m1.add(mi3); m1.addSeparator(); m1.add(mi4); msi1 = new MenuItem("Window"); msi2 = new MenuItem("Message"); ms1.add(msi1); ms1.addSeparator(); ms1.add(msi2); fr.setSize(200,200); fr.setVisible(true); }
  62. 62. ตวอยางโปรแกรมแสดงเมนCยอย ' public static void main(String args[]) { SubMenuDemo obj= new SubMenuDemo(); obj.init(); } } ผลลพธ"ทไดMจ&กก&รรนโปรแกรม ,-
  63. 63. ค/ณลกษณะของคลาส Component  ส'วนประกอบกร&ฟฟAกต'&งๆจะม,คณลกษณะอRนอ&ท7เช'น รCปแบบของฟอนต" - ส,ของพRUนหลงหรRอส,ของพRนหนM& (Foreground) เร&ส&ม&รถท,-จะก%&หนด U คณลกษณะของส'วนประกอบกร&ฟฟAกไดM โดยปกต7สวนประกอบกร&ฟฟAกจะ ' ใชMคณลกษณะแบบเด,ยวกบออปเจ<คประเภท Container ท,บรรจอยCเวMนแต'จะ - ' ม,ก&รก%&หนดคณลกษณะเฉพ&ะของส'วนประกอบกร&ฟฟAกนUนๆ  เมธอดท,-ใชMในก&รก%&หนดคณลกษณะของส'วนประกอบกร&ฟฟAก จะอยC'ใน คล&ส Component โดยม,เมธอดท,ส%&คญคRอ - • setFont(Font f) • setForeground(Color c) • setBackground(Color c)
  64. 64. คล&ส Font  เร&ส&ม&รถสรM&งออปเจ<คของคล&ส Font เพRอใชMในก&รก%&หนดฟอนต"ไดM -  Constructor ของคล&ส Font ท,ส%&คญม,ดงน,U - • public Font(String name,int style,int size) — name ค%อช%อฟอนต4 — style ค%อรปแบบของฟอนต4 เชน Font.PLAIN,Font.BOLD, Font.ITALIC — size ค%อขนาดของฟอนต4  เราสามารถก"าหนดฟอนต4ใหกบออปเจคของคลาส Component โดยใช เมธอด setFont()
  65. 65. คล&ส Color  เร&ส&ม&รถสรM&งออปเจ<คของคล&ส Color เพRอใชMในก&รก%&หนดส,ไดM -  Constructor ของคล&ส Color ท,-ส%&คญม,ดงน,U • public Color(int r,int g,int b) — โดยท,- r,g,b คRอค'&คว&มเขMมของแสงส,แดง เข,ยว และนU%&เง7น ต&มล%&ดบ  ตวอย'&งเช'น • yellow = new Color(255,255,0); • black = new Color(0,0,0);
  66. 66. ตวอยางโปรแกรมแสดงคณลกษณะ import java.awt.*; public class AttributeDemo { private Frame fr; private Button bn1,bn2,bn3; public void init() { fr = new Frame("ShowAttribute"); bn1 = new Button("OK"); bn2 = new Button("Cancel"); bn3 = new Button("Help"); fr.setLayout(new FlowLayout()); fr.add(bn1); fr.add(bn2); fr.add(bn3);
  67. 67. ตวอยางโปรแกรมแสดงคณลกษณะ fr.setFont(new Font("TimesRoman",Font.BOLD,16)); fr.setForeground(Color.blue); fr.setBackground(Color.green); bn2.setForeground(Color.red); fr.setSize(200,200); fr.show(); } public static void main(String args[]) { AttributeDemo ad = new AttributeDemo(); ad.init(); } } ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม
  68. 68. คล&ส Canvas  แพ<คเกจ AWT ม,คล&สท,-เปJนส'วนประกอบกร&ฟฟAกท,ชR-อ Canvas - ซb-งเปJน เนRอท,-ว'&งเปล'&ท,-ส&ม&รถใชMในก&รว&ดรCปกร&ฟฟAกหรRอเข,ยนขMอคว&มใดๆไดM U  คล&สน,Uจะม,เมธอดท,ชR-อ paint() - ซbงม,รปแบบดงน,U - C public void paint(Graphics g) { [statements] }  ก&รสรM&งภ&พกร&ฟฟAกในภ&ษ&จ&ว&จะท%&ไดMโดยก&รสรM&งคล&สท,-เปJนส'วน กร&ฟฟAก ซb-งสRบทอดม&จ&กคล&สท,ชR-อ Canvas แลMว override เมธอดท,-ชR-อ - paint()
  69. 69. ตวอย'&งโปรแกรม import java.awt.*; public class MyCanvas extends Canvas { public void paint(Graphics g) { g.drawLine(10,10,100,100); } }
  70. 70. ตวอย'&งโปรแกรม import java.awt.*; public class GUIDemo { public static void main(String args[]) { Frame fr = new Frame("Draw line"); MyCanvas mc = new MyCanvas(); fr.add(mc); fr.setSize(150,150); fr.setVisible(true); } } ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม
  71. 71. คลาส Panel  เป$นคลาสประเภท Container ท%&ใหMสามารถใสสวนประกอบกราฟฟกตางๆได  แตกตางจาก Frame ตรงทไมม title bar และไม'ม, resizable corner  Applet เป$นคลาสทส%บทอดมาจากคลาส Panel  โดยทวไปจะมตวจดการวางผงแบบ FlowLayout  สามารถทจะบรรจ/ Panel ลงใน Frame ได
  72. 72. การสรางโปรแกรม GUI ทซบซอน  โดยสวนใหญ GUI จะมสวนประกอบกราฟฟกตางๆมากมาย และการวางผง อาจจะตองมผงหลายช2นทซอนกน Panel ลงไปใน Frame หร%อ Panel ตวอ%น แลวใสสวน  เราสามารถทจะบรรจ/ ประกอบกราฟฟกลงใน Panel อกทหน6ง เพ%อสราง GUI ทซบซอนข62น  เราสามารถทจะก"าหนดให Panel แตละตวมตววางผงตางชนดกนได
  73. 73. ตวอยาง GUI ท,ซบซMอน -
  74. 74. ตวอยางโปรแกรมแสดง GUI ท,ซบซMอน - import java.awt.*; public class StickyPad { private Frame fr; private Panel p1, p2; private TextArea ta1, ta2; private Button bn1, bn2, bn3; public void init() { fr = new Frame("Sticky Pad"); p1 = new Panel(); p2 = new Panel(); bn1 = new Button("Submit"); bn2 = new Button("Leave"); bn3 = new Button("Return"); ta1 = new TextArea(4,40); ta2 = new TextArea(4,40);
  75. 75. ตวอยางโปรแกรมแสดง GUI ท,ซบซMอน - ta1.setBackground(Color.pink); ta1.setFont(new Font("Dialog",Font.PLAIN,20)); ta2.setBackground(Color.lightGray); ta2.setFont(new Font("Dialog",Font.PLAIN,20)); p1.setLayout(new GridLayout(2,1)); p1.add(ta1); p1.add(ta2); p2.setLayout(new FlowLayout()); p2.add(bn1); p2.add(bn2); p2.add(bn3); fr.add(p1); fr.add(p2,BorderLayout.SOUTH); fr.setSize(400,300); fr.show(); }
  76. 76. ตวอยางโปรแกรมแสดง GUI ท,ซบซMอน - public static void main(String args[]) { StickyPad obj = new StickyPad(); obj.init(); } }
  77. 77. แพคเก<จ Swing  Swing เป$นแพคเกจส"าหรบพฒนาโปรแกรม GUI ซ6งมสวนประกอบกราฟฟก ทมากชนดกวาทมอยในแพคเกจ AWT  สวนประกอบกราฟฟกของแพคเกจ Swing จะมลกษณะทดกวาสวนประกอบ กราฟฟกของแพคเกจ AWT  สวนประกอบกราฟฟกของแพคเกจ Swing สามารถก"าหนดรปแบบของ look and feel ทท"าใหไดโปรแกรม GUI ทมรปแบบของกราฟฟกเหม%อนกนในท/ก แพลตฟอร4ม ซ6งจะแตกตางกบแพคเกจ AWT ทจะมรปแบบของกราฟฟกซ6ง ข62นอยกบ look and feel ของแตละแพลตฟอร4ม  การก"าหนด look and feel ไดเองท"าใหโปรแกรม GUI ทใชออปเจคของ แพคเกจ Swing แสดงผลไดชากวาโปรแกรม GUI ทใชออปเจคของ แพค เกจ AWT
  78. 78. แพคเก<จ Swing  แพคเก<จของ Swing อยC'ในแพคเกจทช%อ javax.swing  คล&สท,-เปJนส'วนประกอบกร&ฟฟAกของแพคเก<จ Swing ทกคล&สจะสRบทอด ม&จ&กคล&ส JComponent  คล&ส JComponent จะส%บทอดม&จากคลาส Container ในแพคเก<จAWT อ,กต'อหนbง -  แพคเก<จ Swing จะม,คล&สท,-เปJนส'วนประกอบกร&ฟฟAกท,-สอดคลMองกบคล&ส ในแพคเก<จ AWT โดยคล&สเหล'&น,จะม,ชR-อขbUนตMนดMวยตวอกษร ‘J’ U
  79. 79. คล&สต'&งๆท,-สบทอดม&จ&กคล&ส JComponent R
  80. 80. คล&สท,เปJนสวนประกอบกราฟฟกในแพคเก<จ Swing -  คล&สท,-เปJนสวนประกอบกราฟฟกทส"าคญในแพคเก<จ Swing มดงน2 • JFrame • JPanel • JButton • JLabel • JTextField • JTextArea • JScrollbar • JToolTip
  81. 81. คล&ส JFrame  แพคเก<จ Swing ม,คล&สประเภท Container ท,-แตกต'&งจ&กคล&สประเภท Container ของแพคเก<จ AWT คRอ JFrame,JDialog,JPanel และ JApplet โดยท-วไปโปรแกรม GUI ท,เปJนโปรแกรมจ&ว&ประยกต"จะใชM - Container ท,เปJนออปเจ<คของคล&ส JFrame -  คล&ส JFrame จะสRบทอดม&จ&กคล&ส Frame โดยม, constructor ท,-ส%&คญ ดงน,U • public JFrame() • public JFrame(String title)
  82. 82. Panes  ออปเจคของคลาส JFrame แตกตางกบ Frame ตรงทมหนาตาง (pane) อย 4 หนาตางดงน,U • root pane • layer pane • glass pane • content pane
  83. 83. เมธอด getContentPane()  เร&ไม'ส&ม&รถท,จะใส'ส'วนประกอบกร&ฟฟAกลงใน JFrame ไดMโดยตรง แต'จะ - ตMองใส'ลงในหนM&ต'&งท,-เปJน content pane แทน  เร&ส&ม&รถท,-จะเร,ยกออปเจ<คของคล&สประเภท Container ดงกล'&วม&ไดM โดยใชMเมธอดท,ชR-อ getContentPane() และส&ม&รถท,จะใส'สวนประกอบ - - ' กร&ฟฟAกลงในออปเจ<คดงกล'&วไดMโดยใชMเมธอด add()  ตวอย'&งเช'น Container c = fr.getContentPane(); c.setLayout(new BorderLayout()); c.add(bn1,BorderLayout.SOUTH);
  84. 84. ตวอยางแสดงโปรแกรม GUI ท,-ใชMคล&สในแพคเก<จ Swing import java.awt.*; import javax.swing.*; public class StickyPadSwing { private JFrame fr; private JPanel p1, p2; private JTextArea ta1, ta2; private JButton bn1, bn2, bn3; public void init() { fr = new JFrame("Sticky Pad"); p1 = new JPanel(); p2 = new JPanel(); bn1 = new JButton("Submit"); bn2 = new JButton("Leave"); bn3 = new JButton("Return");
  85. 85. ตวอยางแสดงโปรแกรม GUI ท,-ใชMคล&สในแพคเก<จ Swing ta1 = new JTextArea(4,40); ta2 = new JTextArea(4,40); ta1.setBackground(Color.pink); ta1.setFont(new Font("Dialog",Font.PLAIN,20)); ta2.setBackground(Color.lightGray); ta2.setFont(new Font("Dialog",Font.PLAIN,20)); p1.setLayout(new GridLayout(2,1)); p1.add(ta1); p1.add(ta2); p2.setLayout(new FlowLayout()); p2.add(bn1); p2.add(bn2); p2.add(bn3); Container c = fr.getContentPane(); c.add(p1);
  86. 86. ตวอยางแสดงโปรแกรม GUI ท,-ใชMคล&สในแพคเก<จ Swing c.add(p2,BorderLayout.SOUTH); fr.setSize(400,300); fr.show(); } public static void main(String args[]) { StickyPadSwing obj = new StickyPadSwing(); obj.init(); } }
  87. 87. ผลลพธ"ท,-ไดMจ&กก&รรนโปรแกรม
  88. 88. คล&ส JComponent  สวนประกอบกราฟฟกของ Swing เพมค/ณลกษณะตางๆข62นมามาก เรา สามารถใชค/ณลกษณะเหลาน2โดยเร,ยกใชเมธอดในคลาส JComponent  เมธอด setBorder(Border bd) ใชส"าหรบก"าหนดขอบใหกบสวน ประกอบกราฟฟก  เมธอด setToolTipText(String text)ใชส"าหรบก"าหนดขอความท จะแสดงเป$น tooltip
  89. 89. คณลกษณะเด'นอR-นๆ  แพคเก<จ Swing ยงม,เมธอดอR-นๆท,-ใชMในก&รก%&หนดรCปลกษณ"และ คณลกษณะเด'นของออปเจ<คท,เปJนส'วนประกอบกร&ฟฟAกต'&งๆเพ7มเต7ม - - อ&ท7เช'น • void setMnemonic(char c) หรRอ • void setMnemonic(int i) • void setIcon(Icon c)
  90. 90. คล&ส LookAndFeel  แพคเก<จ Swing จะอนญ&ตใหMผCMใชMก%&หนด look and feel ของโปรแกรม GUI บนแพลตฟอร"มต'&งๆเองไดM โดยใชMคล&สท,-ชR-อ LookAndFeel  คล&ส LookAndFeel ใชMในก&รก%&หนดรCปแบบต'&งๆของส'วนประกอบ กร&ฟฟAกเช'น ฟอนต" ขน&ด ส, ก&รจดก&รกบเหตก&รณ" (Event) เปJนตMน  โดยท-วไปโปรแกรม GUI ท,-ใชMแพคเก<จ Swing จะสรM&งออปเจ<คของคล&ส UIManager ขbUนม&ตอนรนโปรแกรม เพRอตรวจสอบรCปแบบ look and feel - ของโปรแกรม GUI และเร&ส&ม&รถท,จะก%&หนดรCปแบบ look and feel ใหม' - ไดMโดยใชMเมธอด UIManager setLookAndFeel(LoodAndFeel l)
  91. 91. คล&ส Dialog  คลาส Dialog เป$นคลาสทส%บทอดมาจากคลาส Window  คลาส Dialog จะท"างานอยภายใตออปเจคของคลาส Frame ท2งน2การสรางออป เจคของคลาส Dialog จะตองระบ/ออปเจคของคลาส Frame ทคกนซ6งเรยกวา เฟรมแม (parent frame) และอาจก%&หนดโหมดการท"างานใหMเปJนแบบ modal ซ6ง ผใชตองปดออปเจคของคลาส Dialog กอนจ6งจะกลบมาท"างานในออปเจคของ คลาส Frame ทคกนได  คลาส Dialog มรปแบบของ constructor ทส"าคญดงน2 • public Dialog(Frame parent) • public Dialog(Frame parent, String title) • public Dialog(Frame parent, boolean isModal) • public Dialog(Frame parent, String title, boolean isModal)
  92. 92. สรปเนRอห&ของบท U  คล&สท,-อยC'ในแพคเก<จ java.awt ส&ม&รถน%&ม&ใชMสรM&ง GUI แบบ Look and Feel ต&มแพลตฟอร"มท,-ใชMง&นไดM โดยม,คล&ส Component เปJน Superclass ของทกคล&สท,เปJนคล&สประเภทตวใส'ส'วนประกอบกร&ฟฟAก - และคล&สประเภทส'วนประกอบกร&ฟฟAก  รCปแบบก&รจดว&งผงส'วนประกอบกร&ฟฟAกในตวใส'ส'วนประกอบกร&ฟฟAกม, ทUงหมด 5 รCปแบบคRอ BorderLayout, FlowLayout, GridLayout, CardLayout และ GridBagLayout  ก&รจดว&งผงของส'วนประกอบกร&ฟฟAกแบบ BorderLayout จะเปJนก&ร ว&งต&มท7ศต'&งๆไดM 5 ท7ศ ส'วน FlowLayout จะว&งไวMในต%&แหน'งบนสด โดยเร,ยงจ&กซM&ยไปขว& ส%&หรบ GridLayout จะว&งเร,ยงจ&กซM&ยไปขว& และบนลงล'&งในช'องย'อยท,-ม,ขน&ดเท'&กน ต&มจ%&นวนแถวและคอลมน"ท,-ไดM ระบไวM
  93. 93. สรปเนRอห&ของบท U  คล&สประเภทส'วนประกอบกร&ฟฟAกท,-ส%&คญคRอ Button, Label, TextField, TextArea, Checkbox, Choice, List, Menu และ Canvas  Label จะแสดงขMอคว&ม ซb-งผCMใชMไม'ส&ม&รถปrอนขMอคว&มไดM แต'ส%&หรบ TextField ผCMใชMส&ม&รถปrอนขMอคว&มไดMย&วหนbงบรรทด ส'วน TextArea - ผCMใชMส&ม&รถปrอนขMอคว&มไดMหล&ยบรรทด  Checkbox จะเปJนช'องใหMผCMใชMเลRอกหรRอไม'เลRอกโดยส&ม&รถเลRอกไดMหล&ย ช'องพรMอมกน ซb-งจะแตกต'&งจ&ก CheckboxGroup ท,-จะส&ม&รถเลRอกไดM เพ,ยงช'องเด,ยวเท'&นUน  Choice จะแสดงร&ยก&รท,-ถCกเลRอกเพ,ยงร&ยก&รเด,ยว โดยจะแสดงหล&ย ร&ยก&รเมR-อผCMใชMคล7กเม&ส"เท'&นUน ซb-งจะแตกต'&งจ&ก List ท,จะส&ม&รถ - แสดงไดMหล&ยร&ยก&รพรMอมกน
  94. 94. สรปเนRอห&ของบท U  คล&สท,-จะน%&ม&ใชMในก&รแสดงแถบเมนCและเมนCยอยคRอ MenuBar, Menu ' และ MenuItem  คล&ส Font และ Color จะถCกน%&ม&ใชMในกรณ,ทตMองก&รระบคณลกษณะ ,- ฟอนต"และส,ของตวใส'สวนประกอบกร&ฟฟAกและส'วนประกอบกร&ฟฟAก '  ก&รสรM&งภ&พกร&ฟฟAกในภ&ษ&จ&ว&จะท%&ไดMโดยก&รสรM&งคล&สท,-เปJนส'วน กร&ฟฟAก ซb-งสRบทอดม&จ&กคล&ส Canvas แลMว override เมธอด paint()  คล&ส Graphics จะม,เมธอดในก&รว&ดรCปทรงกร&ฟฟAกต'&งๆหล&ยเมธอด  คล&สในแพคเก<จ javax.swing จะถCกน%&ม&ใชMในก&รสรM&ง GUI คลM&ยกบ java.awt แต'จะม,แบบ Look and Feel ท,-เหมRอนกนในทกแพลตฟอร"ม โดย ไม'ขนอยCกบแพลตฟอร"มท,น%&ไปใชMง&น bU ' -
  95. 95. แบบฝyกหด  ขMอท,- 1 • จ&กโปรแกรมจ%&ลองระบบธน&ค&ร ใหMทดลองเข,ยน GUI โดยใชMแพคเก<จ java.awt ท,- ท%&หนM&ท,-เปJนส'วนต7ดต'อกบผCMใชM (User Interface) ใหMพนกง&นของธน&ค&รส&ม&รถ เร,ยกดCร&ยชRอลCกคM& บญช,ยอดเง7น และม,ฟงก"ชนในก&รฝ&กและถอนเง7นไดM - {  ขMอท,- 2 • ทดลองปรบปรง GUI ดงกล'&วโดยใชMแพคเก<จ Swing

×