How to use : Java GUI Create Menu and Open Another Panel Layout |
How to use : Java GUI Create Menu and Open Another Panel Layout บทความนี้ถือว่าเป็นสุดยอด Java GUI และการสร้าง Menu Bar เราจะประยุกต์ใช้ Menu กับ Layout ของ Panel โดยการสร้าง Frame หลักเป็นเหมือนหน้า Index ของ Application จากนั้นจะสร้าง Menu มาเพื่อเรียก Layout ทีอยู่ใน Panel ของ Class ต่าง ๆ มาแสดงใน Frame หลัก ซึ่งการออกแบบในรูปแบบนี้จะช่วยให้โปรแกรมทำงานอยู่ใน Frame เดียวตลอด เพียงแต่มีการเรียก Layout จากส่วนต่าง ๆ มาแสดงตามเงื่อนไขที่เราเขียนขึ้น
How to use : Java GUI Create Menu and Open Another Panel Layout
Syntax
PanelFrame panel = new PanelFrame();
panel.setBorder(BorderFactory.createTitledBorder("Panel"));
getContentPane().removeAll();
getContentPane().add(panel, BorderLayout.CENTER);
getContentPane().doLayout();
เลือกสร้าง Class ใหม่แบบ JPanel
ประกอบด้วย 5 ไฟล์คือ
- MyForm.java เป็นไฟล์หลักหรือ Frame หลักสำหรับแสดงหน้า GUI
- PanelMain.java เป็น Layout หลักเปรียบเสมือนหน้า Home
- PanelFrame1.java เป็น Layout เมื่อคลิก Menu 1
- PanelFrame2.java เป็น Layout เมื่อคลิก Menu 2
- PanelFrame3.java เป็น Layout เมื่อคลิก Menu 3
Example ตัวอย่างการสร้าง Menu และการเรียก Layout จากไฟล์ Class อื่น ๆ มาแสดงใน Frame หลัก
MyForm.java
package com.java.myapp;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class MyForm extends JFrame {
static JPanel MainPanel;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
MyForm frame = new MyForm();
frame.setVisible(true);
}
});
}
/**
* Create the frame.
*/
public MyForm() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 508, 375);
setTitle("ThaiCreate.Com Java GUI Tutorial");
getContentPane().add(new PanelMain()); // Load Panel Main
// Menu Bar
JMenuBar menuBar=new JMenuBar();
// Main Menu
JMenu menuMain = new JMenu("File");
// Panel 1
JMenuItem menu1 = new JMenuItem("Menu 1 - Panel 1");
menu1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
PanelFrame1 panel1 = new PanelFrame1();
panel1.setBorder(BorderFactory.createTitledBorder("Panel 1"));
getContentPane().removeAll();
getContentPane().add(panel1, BorderLayout.CENTER);
getContentPane().doLayout();
}
});
// Panel 2
JMenuItem menu2 = new JMenuItem("Menu 2 - Panel 2");
menu2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
PanelFrame2 panel2 = new PanelFrame2();
panel2.setBorder(BorderFactory.createTitledBorder("Panel 2"));
getContentPane().removeAll();
getContentPane().add(panel2, BorderLayout.CENTER);
getContentPane().doLayout();
}
});
// Class 3
JMenuItem menu3 = new JMenuItem("Menu 3 - Panel 3");
menu3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
PanelFrame3 panel3 = new PanelFrame3();
panel3.setBorder(BorderFactory.createTitledBorder("Panel 3"));
getContentPane().removeAll();
getContentPane().add(panel3, BorderLayout.CENTER);
getContentPane().doLayout();
}
});
menuMain.add(menu1);
menuMain.add(menu2);
menuMain.add(menu3);
menuBar.add(menuMain);
setJMenuBar(menuBar);
}
}
PanelMain.java
package com.java.myapp;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Font;
public class PanelMain extends JPanel {
/**
* Create the panel.
*/
public PanelMain() {
setLayout(null);
JLabel lblPanelMain = new JLabel("Panel Main");
lblPanelMain.setFont(new Font("Tahoma", Font.PLAIN, 20));
lblPanelMain.setHorizontalAlignment(SwingConstants.CENTER);
lblPanelMain.setBounds(105, 110, 239, 31);
add(lblPanelMain);
}
}
PanelFrame1.java
package com.java.myapp;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import javax.swing.JSpinner;
import javax.swing.JFormattedTextField;
public class PanelFrame1 extends JPanel {
/**
* Create the panel.
*/
public PanelFrame1() {
setLayout(null);
JLabel label = new JLabel("Panel 1");
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font("Tahoma", Font.PLAIN, 20));
label.setBounds(108, 33, 239, 31);
add(label);
JButton btnNewButton = new JButton("New button");
btnNewButton.setBounds(70, 99, 89, 23);
add(btnNewButton);
JLabel lblNewLabel = new JLabel("New label");
lblNewLabel.setBounds(113, 154, 46, 14);
add(lblNewLabel);
JSpinner spinner = new JSpinner();
spinner.setBounds(281, 100, 29, 20);
add(spinner);
JFormattedTextField formattedTextField = new JFormattedTextField();
formattedTextField.setBounds(193, 217, 141, 20);
add(formattedTextField);
}
}
PanelFrame2.java
package com.java.myapp;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.JEditorPane;
import javax.swing.JToggleButton;
import javax.swing.JComboBox;
import javax.swing.JButton;
public class PanelFrame2 extends JPanel {
/**
* Create the panel.
*/
public PanelFrame2() {
setLayout(null);
JLabel label = new JLabel("Panel 2");
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font("Tahoma", Font.PLAIN, 20));
label.setBounds(108, 42, 239, 31);
add(label);
JEditorPane editorPane = new JEditorPane();
editorPane.setBounds(10, 111, 106, 20);
add(editorPane);
JToggleButton tglbtnNewToggleButton = new JToggleButton("New toggle button");
tglbtnNewToggleButton.setBounds(135, 111, 121, 23);
add(tglbtnNewToggleButton);
JComboBox comboBox = new JComboBox();
comboBox.setBounds(155, 168, 28, 20);
add(comboBox);
JButton btnNewButton = new JButton("New button");
btnNewButton.setBounds(275, 190, 89, 23);
add(btnNewButton);
JButton btnNewButton_1 = new JButton("New button");
btnNewButton_1.setBounds(47, 208, 89, 23);
add(btnNewButton_1);
}
}
PanelFrame3.java
package com.java.myapp;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.JButton;
public class PanelFrame3 extends JPanel {
/**
* Create the panel.
*/
public PanelFrame3() {
setLayout(null);
JLabel label = new JLabel("Panel 3");
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font("Tahoma", Font.PLAIN, 20));
label.setBounds(111, 43, 239, 31);
add(label);
JButton btnNewButton = new JButton("New button");
btnNewButton.setBounds(127, 136, 89, 23);
add(btnNewButton);
JButton btnNewButton_1 = new JButton("New button");
btnNewButton_1.setBounds(288, 198, 89, 23);
add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("New button");
btnNewButton_2.setBounds(56, 198, 89, 23);
add(btnNewButton_2);
}
}
Output
ตัวอย่างสร้าง Menu ขึ้นมา 3 Menu
แสดง Panel 1 เมื่อคลิกที่ Menu 1
แสดง Panel 2 เมื่อคลิกที่ Menu 2
แสดง Panel 3 เมื่อคลิกที่ Menu 3
อ่านเพิ่มเติม : Java GUI Swing Menus
Property & Method (Others Related) |
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2013-09-10 10:02:42 /
2017-03-27 21:51:43 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|