160 likes | 263 Views
การสร้างส่วนติดต่อกับผู้ใช้ (5) การสร้างเมนู. การสร้างเมนู. มีคลาสที่เกี่ยวข้องกับการสร้างเมนูดังนี้ JMenuBar ใช้สร้างแถบเมนู ด้านบน ( จะได้พื้นที่ขาวๆ เปล่าๆ ) JMenu ใช้สร้างรายการกลุ่ม เมนู ( ในภาพบนมี 3 ตัว คือ A Menu, Another Menu, A submenu )
E N D
การสร้างส่วนติดต่อกับผู้ใช้ (5)การสร้างเมนู
การสร้างเมนู มีคลาสที่เกี่ยวข้องกับการสร้างเมนูดังนี้ • JMenuBarใช้สร้างแถบเมนูด้านบน (จะได้พื้นที่ขาวๆ เปล่าๆ) • JMenu ใช้สร้างรายการกลุ่มเมนู (ในภาพบนมี 3 ตัวคือ A Menu, Another Menu, A submenu) • JMenuItem ใช้สร้างเมนูย่อย ที่เป็นเมนูลูกตัวสุดท้าย (ในภาพบนมี5 ตัวคือ A text-only menu item, An item in the submenu, Another item และเมนูที่มีรูปภาพด้านหน้าอีก 2 อัน) • JCheckboxMenuItem ใช้สร้างเมนูแบบcheckbox (ภาพบนมี 2 ตัว) • JRadioButtonMenuItem ใช้สร้างเมนูแบบ radiobutton (ภาพบนมี 2 ตัว) • JSeparatorใช้สร้างเส้นคั่นรายการเมนู
JMenuBar • ใช้สร้างแถบเมนูด้านบน มี constructor ดังนี้ public JMenuBar() • ตัวอย่าง myMenuBar = new JMenuBar(); • การใช้งาน สามารถใส่ออบเจ็กต์ของคลาสJMenuBarลงใน Frame ได้โดยใช้เมธอดsetJMenuBar() • ตัวอย่าง this.setJMenuBar(myMenuBar);
JMenu • ใช้สร้างรายการกลุ่มเมนู • constructor ที่สำคัญคือ public JMenu(String label); • ตัวอย่าง menuFood = new JMenu("Food"); • การใช้งาน ต้องใส่ออบเจ็กต์ของคลาสJMenu ลงใน JMenuBar โดยใช้เมธอด add() • ตัวอย่าง myMenuBar.add(menuFood);
JMenuItem • ใช้สร้างเมนูย่อยสุดที่เป็นเมนูลูก • constructor ที่สำคัญ public JMenuItem(String label); • ตัวอย่าง miChickenSteak = new JMenuItem("Chicken steak"); • การใช้งาน ให้ใส่menuItemลงไปใน menu อีกทีหนึ่งด้วยเมธอด add()
การใส่รูปภาพให้กับJMenu, JMenuItem • สามารถใส่รูปภาพ icon ให้กับเมนูได้โดยใช้คำสั่งsetIcon ตัวอย่าง menuFood.setIcon(new ImageIcon("./icon/food.jpg"));
การกำหนด Mnemonic code • คือการกำหนดคีย์ที่เป็น shortcut ให้กับเมนู โดยใช้คำสั่งsetMnemonic() ตัวอย่าง miChickenNoodle.setMnemonic(KeyEvent.VK_C); หมายถึง เมื่อกด key ตัว C ในคีย์บอร์ดจะเป็นการเลือกเมนูนี้
JCheckBoxMenuItem • ใช้สร้างรายการเมนูแบบ checkbox • Constructor ที่สำคัญ public JCheckBoxMenuItem(String label) public JCheckBoxMenuItem(String label, boolean state)
ขั้นตอนการสร้างเมนู • สร้างออบเจ็กต์ของคลาสJMenuBarแล้วใส่ลงไปในJframe ใช้คำสั่งsetJMenuBar() • สร้างออบเจ็กต์ของคลาสJMenuแล้วใส่ลงไปในJMenuBarใช้คำสั่ง add() • สร้างออบเจ็กต์ของคลาสJMenuItemแล้วใส่ลงไปในJmenuใช้คำสั่ง add()
public class MenuTest extends JFrame{ //1.ประกาศชื่อออบเจ็กต์ต่างๆ ที่จำเป็นต้องใช้ในโปรแกรม private JMenuBarmyMenuBar; private JMenumenuFood, menuDrink, menuNoodle, menuSteak; private JMenuItemmiChickenNoodle, miFishNoodle, miChickenSteak, miFishSteak; private JPanel p; private JTextArea ta; private JScrollPanesp; //2.เขียน constructor methodเพื่อเริ่มต้นการทำงานขอบออบเจ็กต์ public MenuTest() { buildMenu();//เรียกเมธอดเพื่อสร้างเมนู buildPanel();//เรียกเมธอดเพื่อสร้างพาเนล this.setLayout(new BorderLayout()); this.add(p, BorderLayout.CENTER); this.setTitle("IT Restaurant"); setSize(300,300); setLocationRelativeTo(null); //ให้วินโดวส์อยู่กลางหน้าจอ setVisible(true); } //end constructor
//3.เขียนเมธอดเพื่อสร้างเมนู//3.เขียนเมธอดเพื่อสร้างเมนู public void buildMenu() { //3.1สร้าง newออบเจ็บต์ต่างๆ ที่จำเป็นต้องใช้โปรแกรม myMenuBar= new JMenuBar(); menuFood= new JMenu("Food"); menuDrink= new JMenu("Drink"); menuNoodle= new JMenu("Noodle"); menuSteak= new JMenu("Steak"); miChickenNoodle = new JMenuItem("Chicken noodle”); miFishNoodle= new JMenuItem("Fish noodle“); miChickenSteak= new JMenuItem("Chicken steak"); miFishSteak= new JMenuItem("Fish steak"); //3.2 ใส่รูปภาพให้เมนู menuFood.setIcon(new ImageIcon("./icon/food.jpg")); menuDrink.setIcon(new ImageIcon("./icon/drink.jpg")); miChickenNoodle.setIcon(new ImageIcon("./icon/noodlechicken.jpg")); miFishNoodle.setIcon(new ImageIcon("./icon/noodlefish.jpg")); miChickenNoodle.setMnemonic(KeyEvent.VK_C);//กำหนด mnemonic code miFishNoodle.setMnemonic(KeyEvent.VK_F); //กำหนด mnemonic code
// 3.3 เขียนดักจับeventให้กับmenuItem miChickenNoodle.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // method getTextเพื่อดึงข้อความเดิมที่อยู่ในtextareaออกมา // method setTextเพื่อกำหนดค่าข้อความใหม่ลงไปในtextarea ta.setText(ta.getText() + "You order chicken noodle.\n"); } }); miFishNoodle.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ta.setText(ta.getText() + "You order fish noodle.\n"); } });
//3.4add เมนูต่างๆ ลงไป myMenuBar.add(menuFood); myMenuBar.add(menuDrink); menuFood.add(menuNoodle); menuFood.addSeparator(); menuFood.add(menuSteak); menuNoodle.add(miChickenNoodle); menuNoodle.add(miFishNoodle); menuSteak.add(miChickenSteak); menuSteak.add(miFishSteak); //**สำคัญ** เพิ่มmenuBarลงไปในFrame this.setJMenuBar(myMenuBar); }//end buildMenu()
//4.สร้างเมธอดbuildPanel public void buildPanel() { p = new JPanel(new BorderLayout()); ta = new JTextArea(); sp= new JScrollPane(ta);//รวมให้textareaมี scrollbarด้วย //แล้ว add scrollpaneลงไปในpanel p.add(sp, BorderLayout.CENTER); } //5.เขียน main เพื่อเริ่มต้นทำงานโปรแกรม public static void main(String[] args) { MenuTestmt = new MenuTest(); }
แบบฝึกหัด • เขียนโปรแกรม Notepad โดยมีเมนูดังนี้ หมายเหตุ เปลี่ยนสีตัวอักษรใช้คำสั่งta.setForeground(Color.red); เปลี่ยน font ใช้คำสั่ง Font newfont = new Font(“Serif”,Font.Plain, 20); ta.setFont(newfont);