Graphic User Interface (GUI)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Component องค์ประกอบของ GUI.
Advertisements

Swing Component Basic Component.
ทบทวนเรื่อง GUI - กลุ่มคำสั่ง AWT Set (Abstract Windowing Toolkit) และ
ความหมายของ GUI Graphic User Interface (GUI) คือ ส่วนของการติดต่อกับผู้ใช้ด้วยรูปภาพ ที่มีสร้างขึ้นโดยใช้โปรแกรม อยู่ในชุดแพคเกจ java.awt และ javax.swing.
การสร้างส่วนติดต่อกับผู้ใช้ (5) การสร้างเมนู
Java Desktop Application #5
การจัดวางคอมโพเนนต์กราฟิก
Graphical User Interface (GUI)
การจัดวางคอมโพเนนต์กราฟิก
โปรแกรมขึ้นทะเบียนเกษตรกร ผู้ปลูกข้าวนาปี ปี 2557/58
การสร้างเว็บเพจด้วยภาษา Html
ไปที่ 7  ก่อนเริ่มต้นใช้งานโปรแกรม Microsoft Word เพื่อสร้าง เอกสารรายงานต่าง ๆ เราจำเป็นต้องรู้ วิธีการเรียกใช้งาน ที่ถูกต้อง เพื่อให้ใช้ โปรแกรมได้อย่างมีประสิทธิภาพ.
การจัดทำเว็บไซต์สำเร็จรูปด้วยโปรแกรม Joomla!
1.NET Framework Class อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา.
จัดทำโดย น. ส. ดวงกมล งามอยู่เจริญ เลขที่ 8 น. ส. ณัชชา เชื้อตา เลขที่ 6 เตรียมบริหารธุรกิจปี 1.
การใช้งานโปรแกรม SPSS
ซอฟต์แวร์ระบบที่รู้จักกันดี คือซอฟต์แวร์ควบคุมการปฏิบัติการ ของคอมพิวเตอร์ที่เรียกว่า ระบบปฏิบัติการ ระบบปฏิบัติการเป็นชุดคำสั่งที่ใช้ควบคุมระบบฮาร์ดแวร์และ.
Computer in Business เรื่อง การใช้งาน Access เบื้องต้น.
1. Select query ใช้สำหรับดึงข้อมูลที่ต้องการ
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
การใช้งาน Microsoft Excel
ซอฟต์แวร์ที่น่าสนใจ จัดทำโดย น.ส. จิตรวรรณ เอกพันธ์ sc คณะวิทยาศาสตร์ วิชาเอกคณิตศาสตร์ (กศ.บ.)
ตัวแปร และชนิด ข้อมูล. ตัวแปร การกำหนดตัวแปรเป็นการใช้ ชื่อตัวแปรแทน ตำแหน่งบนหน่วยความจำ สำหรับเก็บ ข้อมูลระหว่างการ ประมวลผล ซึ่งอาจเป็นข้อมูลนำเข้า.
MEE 231 Computer Programming สัปดาห์ที่ 6 ภาษา C หลักการของโปรแกรม ชนิดของตัวแปร การดำเนินการ คำสั่งการรับค่าตัวแปร และการแสดงผล.
Intro Excel 2010 ข้อมูลจาก... ellession1.htm.
เรื่อง การใช้งานโปรแกรม Microsoft office power point การใช้งาน โปรแกรม Microsoft Power Point.
Microsof t Office Word เตรียมความ พร้อม Microsoft Office Word 2007 แดงเขียวน้ำเงิน ม่วงดำเขียว เหลืองส้มน้ำตาล น้ำเงินดำแดง.
การใช้งาน Microsoft Word กลุ่ม 2T_PUK. โปรแกรม Microsoft Word เป็นโปรแกรมสำเร็จรูปที่เหมาะกับ งานพิมพ์ต่าง ๆ แทนเครื่องพิมพ์ดีดในสมัยก่อน ที่เวลาแก้ไข.
วรกร สุพร งานนโยบายและแผน และประกันคุณภาพการศึกษา คณะอุตสาหกรรมเกษตร มหาวิทยาลัยเชียงใหม่
การพัฒนาบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง หลักการทำงานของคอมพิวเตอร์ วิชาคอมพิวเตอร์พื้นฐาน สำหรับนักเรียนชั้นมัธยมศึกษาปีที่ 1 โรงเรียนเฉลิมราชประชาอุทิศ.
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
ซอร์ฟแวร์ ( Software ). Microsoft excel Microsoft excel Microsoft power point.. Link Link.
Word ที่ไม่ใช่แค่ Word
โปรแกรม Microsoft office word 2010
“วิธีการใช้งาน PG Program New Version สำหรับ PGD”
Microsoft Access 2007 การสร้างฟอร์ม
แบบฟอร์มที่ 2 1. ชื่อวิชา  MFS2101 การออกแบบประสบการณ์ผู้ใช้ (User Experience Design) 2. หัวข้อที่ประจำ สัปดาห์นี้  การออกแบบ UI เพื่อนำข้อมูลเข้า  
Introduction to VB2010 EXPRESS
Introduction SQLite Prawit Pimpisan Computer Science RERU.
ภาษาวิชวลเบสิก (Visual Basic language).
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
Introduction List View Prawit Pimpisan Computer Science RERU.
เรียนรู้การใช้งานโปรแกรม เพื่อจำลองระบบไมโครคอนโทรลเลอร์
โครงสร้างภาษา C Arduino
บทที่ 3 การสร้างเว็บไซต์ และการปรับคุณสมบัติของเว็บเพจ
Basic Input Output System
The Collections Framework
ระบบการจัดการคลินิกครบวงจร
Object-Oriented Programming Paradigm
วิธีการกำหนดค่า Microsoft SharePoint ของคุณ เว็บไซต์ออนไลน์
Java Translation Object and Class ในมุมมองคอมพิวเตอร์ Objects หรือ Instances หมายถึงวัตถุที่กำเนิดตัวตนจริงๆจากต้นแบบที่กำหนดโดยคลาส Object.
Inheritance and Encapsulation
การเขียนภาษาจาวาเบื้องต้น
SMS News Distribute Service
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
หน่วยการเรียนรู้ การเขียนโปรแกรมภาษาขั้นพื้นฐาน เรื่อง โครงสร้างพื้นฐาน HTML 5 รหัส รายวิชา ง23102 การงานอาชีพและเทคโนโลยี 6 กลุ่มสาระ การงานอาชีพและเทคโนโลยี
การแก้ไขข้อมูล ความสัมพันธ์ระหว่างตาราง
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
บทที่ 8 การแก้ไขข้อผิดพลาดโปรแกรม(Debugging)
OPERATOR ภาษาปาสคาล (Pascal)
กิจกรรมที่ 7 นายปรีชา ขอวางกลาง
Array: One Dimension Programming I 9.
สัปดาห์ที่ 9 Designs by SolidWorks
การเขียนโปรแกรมคอมพิวเตอร์ แบบภาษาเชิงวัตถุ
ฟังก์ชันของโปรแกรม Computer Game Programming
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
การสรุปผลข้อมูล และ Action Query
ระบบการส่งต่อข้อมูลอาการไม่พึงประสงค์จากการแพ้ยา
Class Diagram.
Sequence Diagram.
ใบสำเนางานนำเสนอ:

Graphic User Interface (GUI)

รู้จัก GUI component ส่วนติดต่อกับผู้ใช้ด้วยกราฟิกที่มีการสร้างขึ้นจากโปรแกรม เรียกใช้งานจากกลุ่มคำสั่ง AWT Set (Abstract Windowing Toolkit) และ Swing Set ซึ่งเราสามารถสร้าง GUI ได้ 3 ประเภท คือ Container คือ คอมโพเนนต์ที่สามารถมีคอมโพเนนต์อื่นเป็นส่วนประกอบได้ โดยมีคุณลักษณะเป็น Abstract Class ซึ่งสามารถแบ่งได้ 2 ประเภท คือ Top Level สามารถแสดงบนหน้าจอได้เป็นตัวแรก เช่น Frame และ Dialog Non - top Level คือไม่สามารถแสดงบนหน้าจอได้เป็นตัวแรก เช่น Panel Scroll และ Pane Simple Component คือ คอมโพเนนต์ทั่วไป เช่น Button, Label, Radio Button, List, Check box หรือ Combobox เป็นต้น Text Component คือ คอมโพเนนต์เกี่ยวกับข้อความ เช่น TextField เป็นต้น

Frame : ฟอร์มหรือกรอบแสดงผล เป็นคอมโพเนนต์ประเภท Top – Level Container สร้างจากคลาส JFrame เรียกใช้จากกลุ่มคำสั่ง Swing Set ประกอบด้วยหัวเรื่อง ขอบเขต ขนาดพื้นที่ และปุ่มต่างๆ ที่รองรับการจัดการหน้าต่าง โปรแกรมที่เป็น GUI จะต้องมีเฟรมอย่างน้อย 1 เฟรมเป็นองค์ประกอบเสมอ มีรูปแบบการใช้งาน ดังนี้ JFrame frameName = new JFrame(title); โดยที่ frameName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JFrame title เป็นข้อความที่ต้องการให้แสดงบนเฟรม

ฟังก์ชัน setDefaultCloseOperation() ทำหน้าที่กำหนดรูปแบบการทำงานเมื่อมีการปิดเฟรม ขึ้นอยู่กับอาร์กิวเมนต์ที่กำหนดให้ดังนี้ DO_NOTHING_ON_CLOSE ไม่ต้องทำอะไร HIDE_ON_CLOSE เป็นการซ่อนหน้าต่าง โดยนำหน้าต่างออกไปจากหน้าจอ แต่หน้าต่างจะไม่สามารถแสดงได้อีกรอบ DISPOSE_ON_CLOSE เป็นการซ่อนและทำลายหน้าต่าง โดยนำหน้าต่างออกไปจากหน้าจอและคืนทรัพยากรต่างๆ ที่ใช้ให้กับระบบ EXIT_ON_CLOSE เป็นการปิดโปรแกรมโดยใช้ฟังก์ชัน System.exit(0)

โปรแกรมสร้าง Frame import javax.swing.*; public class FrameTest { public static void main(String args[]) { JFrame f = new JFrame("Frame Test"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(250, 200); f.setVisible(true); }

Panel : ส่วนจัดการแสดงผล เป็นคอมโพเนนต์ประเภท Non - top Level Container ต้องวางบน Container สร้างจากคลาส Jpanel มีรูปแบบการใช้งาน ดังนี้ JPanel pName = new JPanel(); หรือ JPanel pName = new JPanel(manager);   โดยที่ pName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JPanel manager เป็นรูปแบบของ LayoutManager ที่ใช้สำหรับจัดวาง คอมโพเนนต์บน Panel   Default Layout Manager จะเป็นแบบ Flow Layout

โปรแกรมสร้าง Panel import java.awt.*; import javax.swing.*; public class PanelTest { public static void main(String args[]) { JFrame f = new JFrame("Panel Test"); JPanel p = new JPanel(); p.setBackground(Color.GREEN); f.add(p); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(200, 150); f.setVisible(true); }

Button : ปุ่ม เป็นปุ่มใช้งานทั่วไปที่สร้างจากคลาส Jbutton มีรูปแบบการใช้งาน ดังนี้ JButton buttonName = new JButton(text); หรือ JButton buttonName = new JButton(text, icon); โดยที่ buttonName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JButton text เป็นข้อความที่ต้องการให้แสดงบนปุ่ม icon เป็นรูปที่ต้องการให้แสดงบนปุ่ม

โปรแกรมสร้าง Button import javax.swing.*; public class ButtonTest { public static void main(String args[]) { JFrame f = new JFrame("Button Test"); JPanel p = new JPanel(); Icon ani = new ImageIcon("line.jpg"); JButton b1 = new JButton("Detail",ani); JButton b2 = new JButton("Close"); p.add(b1); p.add(b2); f.add(p); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(200, 150); f.setVisible(true); }

Label : แสดงผลข้อความ ใช้แสดงข้อความแบบบรรทัดเดียว สร้างจากคลาส Jlabel มีรูปแบบการใช้งาน ดังนี้   JLabel lName = new JLabel(text, icon, Alignment);   โดยที่ lName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JLabel text เป็นข้อความที่ต้องการให้แสดงบน Label icon เป็นรูปที่ต้องการให้แสดงบน Label Alignment เป็นตำแหน่งการจัดวางตามแนวนอนบน Label SwingConstants.LEFT จัดวางแบบชิดซ้าย SwingConstants.CENTER จัดวางแบบกึ่งกลาง SwingConstants.RIGHT จัดวางแบบชิดขวา

โปรแกรมสร้าง Label import java.awt.*; import javax.swing.*; public class LabelTest { public static void main(String args[]) { Font fn = new Font("Courier New", Font.BOLD, 20); JFrame f = new JFrame("Label Test"); JPanel p = new JPanel(); Icon ani = new ImageIcon("Course.gif"); JLabel l1 = new JLabel("Label Test", SwingConstants.CENTER); JLabel l2 = new JLabel(ani, SwingConstants.CENTER); JLabel l3 = new JLabel("I am JAVA", SwingConstants.CENTER); JLabel l4 = new JLabel("I am JAVA", ani, SwingConstants.LEFT); l1.setFont(fn); l2.setFont(fn); l3.setFont(fn); l4.setFont(fn); l1.setPreferredSize(new Dimension(170, 30)); l2.setPreferredSize(new Dimension(170, 30)); l3.setPreferredSize(new Dimension(170, 30)); l4.setPreferredSize(new Dimension(170, 30)); l1.setForeground(Color.blue); l3.setForeground(Color.blue); l2.setOpaque(true); l3.setOpaque(true); l4.setOpaque(true); l2.setBackground(Color.white); l3.setBackground(Color.cyan); l4.setBackground(Color.white); p.add(l1); p.add(l2); p.add(l3); p.add(l4); f.add(p); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(200, 200); f.setVisible(true); }

Text Field : รับและแสดงข้อความ เป็นคอมโพเนนต์สำหรับรอรับข้อความจากผู้ใช้งาน สร้างจากคลาส JTextField มีรูปแบบการใช้งาน ดังนี้ JTextField textName = new JTextField(text, Length); โดยที่ textName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JTextField text เป็นข้อความที่ต้องการให้แสดงบน Text Field Length เป็นจำนวนตัวอักษรจะแสดงใน Text Field

Password Field : รับข้อมูลรหัสผ่าน เป็นคอมโพเนนต์สำหรับรับข้อมูลรหัสผ่านโดยไม่แสดงค่าข้อมูล สร้างจากคลาส JPasswordField มีรูปแบบการใช้งาน ดังนี้ JPasswordField pw = new JPasswordField(text, Length); โดยที่ pw เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JPasswordField text เป็นรหัสผ่านที่ต้องการแสดงบน Password Field Length เป็นจำนวนตัวอักษรของรหัสผ่าน

โปรแกรมสร้าง Text Field/Password Field import java.awt.*; import javax.swing.*; public class TextTest { public static void main(String args[]) { Font fn = new Font("Courier New", Font.BOLD, 20); JFrame f = new JFrame("Text and PassWord Test"); JPanel p = new JPanel(); JLabel t1 = new JLabel("Text and PassWord Test"); JTextField t2 = new JTextField("admin", 15); JPasswordField pw = new JPasswordField("123", 15); t1.setFont(fn); t2.setFont(fn); pw.setFont(fn); t2.setForeground(Color.white); t2.setBackground(Color.blue); p.add(t1); p.add(t2); p.add(pw); f.add(p); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(320, 150); f.setVisible(true); }

โปรแกรมสร้างหน้าจอการเข้าสู่ระบบ import java.awt.*; import javax.swing.*; public class SigninFrame { public static void main(String args[]) { JFrame f; JPanel p; JLabel mlbl, ulbl, pwlbl; JTextField usertxt; JPasswordField pwtxt; JButton signbtn, resetbtn; Font fn1 = new Font("Tahoma", Font.BOLD, 12); Font fn2 = new Font("Courier New", Font.BOLD, 14); f = new JFrame("เข้าสู่ระบบ"); p = new JPanel(); mlbl = new JLabel("*** กรุณาป้อนข้อมูลเข้าสู่ระบบ ***"); ulbl = new JLabel("username"); pwlbl = new JLabel("password"); usertxt = new JTextField(10); pwtxt = new JPasswordField(10); signbtn = new JButton("sign in"); resetbtn = new JButton("reset"); mlbl.setForeground(Color.blue); mlbl.setFont(fn1); ulbl.setFont(fn2); pwlbl.setFont(fn2); usertxt.setFont(fn1); pwtxt.setFont(fn1); signbtn.setFont(fn2); resetbtn.setFont(fn2); p.add(mlbl); p.add(ulbl); p.add(usertxt); p.add(pwlbl); p.add(pwtxt); p.add(signbtn); p.add(resetbtn); f.add(p); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(250, 150); f.setVisible(true); }

RadioButton : ตัวเลือกที่เลือกได้เพียงหนึ่งตัวเลือก เป็นคอมโพเนนต์สำหรับการสร้างตัวเลือกที่สามารถเลือกได้เพียงหนึ่งตัวเลือก สร้างจากคลาส JRadioButton และใช้คลาส ButtonBGroup ในการจัดกลุ่มตัวเลือกต่างๆ ให้อยู่ในกลุ่มเดียวกัน มีรูปแบบการใช้งาน ดังนี้ JRadioButton radioName = new JRadioButton(text, icon, boolValue);   โดยที่ radioName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JRadioButton text เป็นข้อความที่ต้องการให้แสดงบน RadioButton icon เป็นไอคอนที่ต้องการให้แสดงบน RadioButton boolValue เป็นสถานการณ์เลือก ถ้ากำหนดเป็น true คือ ถูกเลือก คลาส ButtonGroup มีรูปแบบการใช้งาน ดังนี้ public ButtonGroup(); มีเมธอด add() และ remove() สำหรับการเพิ่มหรือลบตัวเลือก

List : รายการข้อมูล เป็นคอมโพเนนต์สำหรับสร้างรายการข้อมูลที่สามารถเลื่อนรายการขึ้นลง สร้างจากคลาส JList และใช้คลาส JScrollPane จัดการรายการข้อมูลใน List มีรูปแบบการใช้งาน ดังนี้ JList listName = new JList(); หรือ JList listName = new JList(dataModel); JList listName = new JList(items); โดยที่ listName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส Jlist ataModel เป็นการกำหนดให้เลือกรายการได้ 1 หรือมากกว่า 1 รายการ items เป็นข้อมูลประเภทของรายการ Object หรือ Vector

ScrollPane : แท็บ Scroll bar สร้างจากคลาส JScrollPane มีรูปแบบการใช้งาน ดังนี้ JScrollPane panelist = new JScrollPane(listName); โดยที่ panelist เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JScrollPane listName เป็นรายการข้อมูลประเภท List

โปรแกรมสร้าง Radiobutton และ List AList = new JList(AniList); AList.setFont(fn); AList.setPreferredSize(new Dimension(135, 140)); AList.setVisibleRowCount(5); AList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); JScrollPane panelist = new JScrollPane(AList); p.add(n1); p.add(n2); p.add(panelist); f.add(p); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(230, 200); f.setVisible(true); } public class Radio_List_Test { public static void main(String args[]) { JFrame f; JPanel p; ButtonGroup bg; JRadioButton n1, n2; JList AList; String AniList[] = {"CAT", "RAT", "DOG", "PIG", "DUCK", "EGG", "MILK"}; Font fn = new Font("Courier New", Font.BOLD, 16); f = new JFrame("Select Component Test"); p = new JPanel(); bg = new ButtonGroup(); n1 = new JRadioButton("MALE", true); n2 = new JRadioButton("FEMALE"); bg.add(n1); bg.add(n2); n1.setFont(fn); n2.setFont(fn);

CheckBox : ตัวเลือกที่เลือกได้มากกว่าหนึ่งตัวเลือก เป็นคอมโพเนนต์สำหรับการสร้างตัวเลือกที่เลือกได้มากกว่าหนึ่งตัวเลือก สร้างจากคลาส JCheckBox มีสถานะเป็น true หรือ false มีรูปแบบการใช้งาน ดังนี้ JCheckBox checkName = new JCheckBox(text, icon); โดยที่ checkName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JCheckBox text เป็นข้อความที่ต้องการให้แสดงบน CheckBox icon เป็นไอคอนที่ต้องการให้แสดงบน CheckBox

ComboBox : รายการข้อมูลที่เลือกได้ 1 รายการ เป็นคอมโพเนนต์สำหรับแสดงรายการข้อมูล ซึ่งแสดงได้เพียง 1 รายการและ เลือกข้อมูลในได้เพียง 1 รายการเท่านั้น สร้างจากคลาส JComboBox มีรูปแบบการใช้งาน ดังนี้ JComboBox comboName = new JComboBox(items); โดยที่ comboName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JComboBox items เป็นรายการข้อมูลประเภท Object หรือ Vector

โปรแกรมการใช้งาน CheckBox และ Combobox combo = new JComboBox(country); combo.setFont(fn); combo.setPreferredSize(new Dimension(150, 20)); combo.setSelectedItem("Japan"); combo.setMaximumRowCount(6); p.add(myCheckbox1); p.add(myCheckbox2); p.add(combo); f.add(p); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(250, 250); f.setVisible(true); } import java.awt.*; import javax.swing.*; public class Check_Combo_Test { public static void main(String args[]) { JFrame f; JPanel p; JCheckBox myCheckbox1, myCheckbox2; JComboBox combo; Font fn = new Font("Courier New", Font.BOLD, 16); String country[] = {"ThaiLand“,"Italy“,"Japan“,"France“,"England“,"China"}; f = new JFrame("Select Component Test"); p = new JPanel(); myCheckbox1 = new JCheckBox("Asia"); myCheckbox2 = new JCheckBox("Europe"); myCheckbox1.setFont(fn); myCheckbox2.setFont(fn);

Menu : เมนู เป็นเครื่องมือให้ผู้ใช้งานเลือกใช้คำสั่งต่างๆ จากรายการซึ่งถูกสร้างขึ้นจากเมนูบาร์ มีขั้นตอนดังนี้ สร้างเมนูบาร์จากคลาส JMenuBar JMenuBar menubar = new JMenuBar(); สร้างเมนูจากคลาส JMenu JMenu menuName = new JMenu(itemName); สร้างเมนูย่อย (Menu Item) จากคลาส JMenuItem JMenuItem menuItemName = new JMenuItem(subItemName); เพิ่มเมนูย่อยเข้าในเมนูที่ต้องการ menuName.add(menuItemName); เพิ่มเมนูเข้าในเมนูบาร์ menubar.add(menuName); กำหนดเมนูบาร์ให้กับ Frame โดยใช้เมธอด setJMenuBar frameName.setJMenuBar(menubar); โดยที่ menubar เป็นชื่อเมนูบาร์ menuName เป็นชื่อรายการเมนูในเมนู itemName เป็นข้อความที่แสดงในรายการเมนู menuItemName เป็นชื่อรายการเมนูย่อยในเมนู subItemName เป็นข้อความที่แสดงในรายการเมนูย่อย

โปรแกรมการใช้งาน CheckBox และ Combobox menuOpen = new JMenuItem("Open"); menuExit = new JMenuItem("Exit"); menuFile.setFont(fn); menuNew.setFont(fn); menuN1.setFont(fn); menuN2.setFont(fn); menuOpen.setFont(fn); menuExit.setFont(fn); menuAbout.setFont(fn); menuFile.add(menuNew); menuFile.addSeparator(); menuFile.add(menuOpen); menuFile.add(menuExit); menubar.add(menuFile); menubar.add(menuAbout); f.setJMenuBar(menubar); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(250, 200); f.setVisible(true); } import java.awt.*; import javax.swing.*; public class MenuTest { public static void main(String args[]) { Font fn = new Font("Courier New", Font.BOLD, 16); JFrame f; JMenuBar menubar; JMenu menuFile, menuNew, menuAbout; JMenuItem menuN1, menuN2, menuOpen, menuExit; f = new JFrame("Menu Test"); menubar = new JMenuBar(); menuFile = new JMenu("File"); menuAbout = new JMenu("About"); menuNew = new JMenu("New"); menuN1 = new JMenuItem("Java"); menuN2 = new JMenuItem("C/C++"); menuNew.add(menuN1); menuNew.addSeparator(); menuNew.add(menuN2);

Layout Manager กับการจัดวางคอมโพเนนต์ LayoutManager หมายถึง รูปแบบที่ใช้สำหรับการจัดวางคอมโพเนนต์บน Panel Default เป็นแบบ FlowLayout ซึ่งเป็นการจัดวางแบบเรียงไปตามลำดับในบรรทัดเดียวกัน หากไม่สามารถแสดงผลได้ในหนึ่งบรรทัด จะแสดงผลต่อในบรรทัดใหม่ สามารถระบุ Layout ที่ต้องการได้โดยใช้เมธอด setLayout() ดังนี้ JPanel panel = new JPanel(); panel.setLayout(new FlowLayout());

FlowLayout Manager : จัดวางตำแหน่งตามลำดับ   JButton a = new JButton("หนึ่ง"); JButton b = new JButton("สอง"); JButton c = new JButton("สาม"); JButton d = new JButton("สี่"); JButton e = new JButton("ห้า"); JButton g = new JButton("หก"); JButton h = new JButton("เจ็ด"); JButton i = new JButton("แปด"); JButton j = new JButton("เก้า");   a.setFont(fn); b.setFont(fn); c.setFont(fn); d.setFont(fn); e.setFont(fn); g.setFont(fn); h.setFont(fn); i.setFont(fn); j.setFont(fn);   p.add(a); p.add(b); p.add(c); p.add(d); p.add(e); p.add(g); p.add(h); p.add(i); p.add(j); f.add(p);   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(200, 180); f.setVisible(true); } FlowLayout Manager เป็นการจัดเรียงคอมโพเนนต์ตามลำดับตำแหน่งของคอมโพเนนต์จากซ้ายไปขวาและบนลงล่าง import javax.swing.*; import java.awt.*;  public class FlowLayoutTest {  public static void main(String[] args) { Font fn = new Font("Microsoft Sans Serif", Font.BOLD, 14); JFrame f = new JFrame("FlowLayOut Test"); JPanel p = new JPanel(); p.setLayout(new FlowLayout());

BorderLayout Manager : จัดวางตำแหน่งเป็น 5 ส่วน JButton a = new JButton("หนึ่ง"); JButton b = new JButton("สอง"); JButton c = new JButton("สาม"); JButton d = new JButton("สี่"); JButton e = new JButton("ห้า"); JButton g = new JButton("หก"); JButton h = new JButton("เจ็ด"); JButton i = new JButton("แปด"); JButton j = new JButton("เก้า"); a.setFont(fn); b.setFont(fn); c.setFont(fn); d.setFont(fn); e.setFont(fn); g.setFont(fn); h.setFont(fn); i.setFont(fn); j.setFont(fn); JPanel p1 = new JPanel(); p1.setLayout(new BorderLayout()); JPanel p2 = new JPanel(); p2.setLayout(new BorderLayout()); p.add(p1, BorderLayout.NORTH); p1.add(a, BorderLayout.WEST); p1.add(b, BorderLayout.CENTER); p1.add(c, BorderLayout.EAST); p.add(d, BorderLayout.WEST); p.add(p2, BorderLayout.CENTER); p2.add(e, BorderLayout.NORTH); p2.add(g, BorderLayout.CENTER); p2.add(h, BorderLayout.SOUTH); p.add(i, BorderLayout.EAST); p.add(j, BorderLayout.SOUTH); f.add(p); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(200, 180); f.setVisible(true); } เป็นการจัดเรียงคอมโพเนนต์ โดยแบ่งพื้นที่เป็น 5 ส่วน คือ North, South, East, West และ Center ในแต่ละส่วนจะวางได้ 1 คอมโพเนนต์ หากต้องการจัดวางคอมโพเนนต์มากกว่า 1 คอมโพเนนต์ สามารถแบ่งพื้นที่ในส่วนใดๆ ออกเป็น 5 ส่วน ไปเรื่อย ๆ ได้ import javax.swing.*; import java.awt.*;  public class BorderLayoutTest {  public static void main(String[] args) { Font fn = new Font("Microsoft Sans Serif", Font.BOLD, 14); JFrame f = new JFrame("BorderLayOut Test"); JPanel p = new JPanel(); p.setLayout(new BorderLayout());

GridLayout Manager : จัดวางตำแหน่งตามตาราง   JButton a = new JButton("หนึ่ง"); JButton b = new JButton("สอง"); JButton c = new JButton("สาม"); JButton d = new JButton("สี่"); JButton e = new JButton("ห้า"); JButton g = new JButton("หก"); JButton h = new JButton("เจ็ด"); JButton i = new JButton("แปด"); JButton j = new JButton("เก้า");   a.setFont(fn); b.setFont(fn); c.setFont(fn); d.setFont(fn); e.setFont(fn); g.setFont(fn); h.setFont(fn); i.setFont(fn); j.setFont(fn);   p.add(a); p.add(b); p.add(c); p.add(d); p.add(e); p.add(g); p.add(h); p.add(i); p.add(j); f.add(p);   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(200, 180); f.setVisible(true); } เป็นการจัดเรียงคอมโพเนนต์ โดยแบ่งพื้นที่เป็น Grid ตามจำนวนแถวและคอลัมน์ ในแต่ละ Grid จะวางได้ 1 คอมโพเนนต์ โดยจัดเรียงไปตามลำดับซ้ายไปขวา และ บนลงล่าง import javax.swing.*; import java.awt.*;  public class GridLayoutTest {   public static void main(String[] args) { Font fn = new Font("Microsoft Sans Serif", Font.BOLD, 14); JFrame f = new JFrame("GridLayOut Test"); JPanel p = new JPanel(); p.setLayout(new GridLayout(5, 2));

GridBagLayout Manager : จัดวางตำแหน่งแบบตาราง addItem(p, a, 0, 0, 1, 1, GridBagConstraints.WEST); addItem(p, b, 1, 0, 1, 1, GridBagConstraints.WEST); addItem(p, c, 2, 0, 1, 1, GridBagConstraints.WEST); addItem(p, d, 0, 1, 1, 1, GridBagConstraints.WEST); addItem(p, e, 1, 1, 1, 2, GridBagConstraints.WEST); addItem(p, g, 2, 1, 1, 1, GridBagConstraints.WEST); addItem(p, h, 0, 2, 1, 1, GridBagConstraints.WEST); addItem(p, i, 2, 2, 1, 1, GridBagConstraints.WEST); addItem(p, j, 0, 3, 3, 1, GridBagConstraints.WEST); f.add(p); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(250, 200); f.setVisible(true); } เป็นการจัดเรียงคอมโพเนนต์โดยแบ่งพื้นที่เป็นส่วนตามจำนวนแถวและคอลัมน์ คล้าย GridLayout Manager แต่มีข้อที่ยืดหยุ่นกว่าคือ ในการจัดวาง 1 คอมโพเนนต์ สามารถใช้พื้นที่มากกว่า 1 แถว 1 คอลัมน์ ได้ import javax.swing.*; import java.awt.*;  public class GridBagLayoutTest {  public static void addItem(JPanel p, JComponent c, int x, int y, int width, int height, int align) { GridBagConstraints gc = new GridBagConstraints(); gc.gridx = x; gc.gridy = y; gc.gridwidth = width; gc.gridheight = height; gc.insets = new Insets(5, 5, 5, 5); gc.anchor = align; gc.fill = GridBagConstraints.NONE; p.add(c, gc); } public static void main(String[] args) { JFrame f = new JFrame("GridBagLayout Test"); JPanel p = new JPanel(); p.setLayout(new GridBagLayout()); JButton a = new JButton("หนึ่ง"); JButton b = new JButton("สอง"); JButton c = new JButton("สาม"); JButton d = new JButton("สี่"); JLabel e = new JLabel("ห้า", SwingConstants.CENTER); e.setPreferredSize(new Dimension(60, 60)); e.setOpaque(true); e.setBackground(Color.cyan); JButton g = new JButton("หก"); JButton h = new JButton("เจ็ด"); JButton i = new JButton("แปด"); JLabel j = new JLabel("เก้า", SwingConstants.CENTER); j.setPreferredSize(new Dimension(200, 30)); j.setOpaque(true); j.setBackground(Color.blue); j.setForeground(Color.white);

Event Handling เป็นการจัดการในส่วนโต้ตอบระหว่างผู้ใช้ กับ GUI ด้วย เช่น การคลิกที่ปุ่ม Button หรือการกด Enter บนแป้นพิมพ์ที่ Text Field เป็นต้น จะต้องตรวจจับเหตุการณ์ก่อนว่าผู้ใช้มีการกระทำกับคอมโพเนนต์ที่เหตุการณ์ใดบ้าง ซึ่งเป็นหน้าที่ของออบเจ็กต์ที่เป็น Event Listener จากนั้นนำ Event Listener ไปผูกติดกับคอมโพเนนต์ เช่น ต้องการตรวจจับเหตุการณ์ที่ปุ่ม CloseButton โดยสร้างออบเจ็กต์จากคลาส ButtonListener เพื่อให้ออบเจ็กต์ดังกล่าวทำหน้าที่เป็น Event Listener และนำไปผูกติดกับปุ่ม CloseButton โดยมีรูปแบบดังนี้ buttonName.addActionListener(new ButtonListener()); โดยที่ buttonName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JButton ButtonListener เป็นออบเจ็กต์จากคลาส ButtonListener

ตัวอย่างเมธอดที่ใช้ สำหรับเหตุการณ์ต่าง ๆ ประเภทเหตุการณ์ อินเตอร์เฟส เมธอด ActionEvent ActionListener actionPerformed(ActionEvent) AdjustmentEvent AdjustmentListener adjustmentValueChanged(AdjustmentEvent) ComponentEvent ComponentListener componentMoved(ComponentEvent) componentHidden(ComponentEvent) componentResized(ComponentEvent) componentShown(ComponentEvent) ContainerEvent ContainerListener componentAdded(Container Event) componentRemoved(Container Event) FocusEvent FocusListener focusGained(FocusEvent) focusLost(FocusEvent) WindowEvent WindowListener windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent)

Inner Class การเขียนโปรแกรมในส่วนจัดการเหตุการณ์ สามารถจัดการให้อยู่ภายใน Inner Class โดยสร้างเป็นคลาสที่มีการ implements อินเตอร์เฟสซึ่งสอดคล้องกับเหตุการณ์ที่เกิดขึ้น และ กำหนดหน้าที่การทำงานให้กับเมธอดในอินเตอร์เฟสนั้นๆ โดยมีรูปแบบดังนี้ private class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource()==buttonName) { } โดยที่ ButtonListener เป็นออบเจ็กต์จากคลาส ButtonListener ActionListener เป็นเหตุการณ์ที่ต้องการตรวจจับ actionPerformed เป็นชื่อเมธอด buttonName เป็นชื่อออบเจ็กต์ที่ประกาศจากคลาส JButton

โปรแกรมตรวจจับการทำงานที่ปุ่ม Close private class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getSource() == b) { JOptionPane.showMessageDialog(null, "See You Again !!!"); System.exit(0); } }  public static void main(String args[]) { CloseButtonTest b = new CloseButtonTest("Button Test"); b.setSize(170, 90); b.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); b.setVisible(true); import java.awt.event.*; import javax.swing.*; public class CloseButtonTest extends JFrame { private JPanel p; Icon ani; JButton b; public CloseButtonTest(String title) { super(title); p = new JPanel(); ani = new ImageIcon("Course.gif"); b = new JButton("Close", ani); b.addActionListener(new ButtonListener()); p.add(b); add(p); }

โปรแกรมตรวจจับการทำงานที่เมนู Exit   private class MenuListener implements ActionListener { public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == menuExit) { System.exit(0); }   public static void main(String args[]) { ExitMenuTest f = new ExitMenuTest("Menu Test"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(200, 200); f.setVisible(true); import javax.swing.*; import java.awt.event.*; public class ExitMenuTest extends JFrame { JMenuBar menubar; JMenu menuFile; JMenuItem menuExit; public ExitMenuTest(String title) { super(title); menubar = new JMenuBar(); menuFile = new JMenu("File"); menuExit = new JMenuItem("Exit", new ImageIcon("Course.gif")); menuFile.add(menuExit); menubar.add(menuFile); setJMenuBar(menubar); menuExit.addActionListener(new MenuListener()); }

อ้างอิง สุดา เธียมมนตรี.คู่มือเรียนเขียนโปรแกรมภาษา Java ฉบับสมบูรณ์ (2nd Edition).นนทบุรี : ไอดีซีฯ, 2556