พื้นฐาน Java GUI : Dialog และ Popup สร้าง Input Dialog และ Custom Modal Dialog

พื้นฐาน Java GUI : Dialog และ Popup สร้าง Input Dialog และ Custom Modal Dialog บทความนี้เราจะมาเรียนรู้เกี่ยวกับ Java GUI และการสร้าง Dialog และ Popuo ทั้งที่เป็น Input Dialog เช่น การสร้าง Input Dialog Popup แบบรับค่า Username / Password หรือการสร้าง Modal Dialog แบบ Confirm ที่จะต้องกด Yes/No หรือจะเป็นแบบ Custom Dialog Popup ที่ใช้การเรียก Form จาก Class อื่น แสดงเป็นแบบ Modal Dialog โดยใน Modal อาจจะสร้างเป็น Input ข้อมูล และหลังจากที่ได้ข้อมูลเรียบร้อยแล้วก็ส่งค่ากลับมายัง Form หลัก

Example 1 : ตัวอย่างการสร้าง Dialog Popup แบบ Cofirm ด้วย Yes/No

MyForm.java

01.package com.java.myapp;
02. 
03.import java.awt.EventQueue;
04.import java.awt.event.ActionEvent;
05.import java.awt.event.ActionListener;
06. 
07.import javax.swing.JButton;
08.import javax.swing.JFrame;
09.import javax.swing.JOptionPane;
10. 
11.public class MyForm extends JFrame {
12. 
13.public static void main(String[] args) {
14.EventQueue.invokeLater(new Runnable() {
15.public void run() {
16.MyForm form = new MyForm();
17.form.setVisible(true);
18.}
19.});
20.}
21. 
22.public MyForm() {
23. 
24.// Create Form Frame
25.super("ThaiCreate.Com Tutorial");
26.setSize(450300);
27.setLocation(500280);
28.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
29.getContentPane().setLayout(null);
30. 
31.// Create Dialog
32.JButton btnButton = new JButton("Submit");
33.btnButton.setBounds(171958923);
34.btnButton.addActionListener(new ActionListener() {
35.public void actionPerformed(ActionEvent e) {
36. 
37.int n = JOptionPane.showConfirmDialog(null,
38."I really like my book",
39."Question (application-modal dialog)",
40.JOptionPane.YES_NO_OPTION,
41.JOptionPane.QUESTION_MESSAGE);
42.System.out.println(n); // Use n for response
43. 
44.}
45.});
46. 
47.getContentPane().add(btnButton);
48. 
49.}
50. 
51.}

Output

Java GUI : Dialog Input Custom Modal Dialog

คลิกที่ Button เพื่อแสดง Dialog แบบ Yes/No

Java GUI : Dialog Input Custom Modal Dialog

ทางเลือก Optional เป็น Yes/No โดยเมื่อกลับไปสามารถนำค่า n ไปใช้ได้

1.System.out.println(n);

Example 2 : ตัวอย่างการสร้าง Dialog Popup แบบมี Input ข้อมูลเช่น Name , Username และ Password

MyForm.java

01.package com.java.myapp;
02. 
03.import java.awt.EventQueue;
04.import java.awt.event.ActionEvent;
05.import java.awt.event.ActionListener;
06. 
07.import javax.swing.JButton;
08.import javax.swing.JComponent;
09.import javax.swing.JFrame;
10.import javax.swing.JLabel;
11.import javax.swing.JOptionPane;
12.import javax.swing.JPasswordField;
13.import javax.swing.JTextField;
14. 
15.public class MyForm extends JFrame {
16. 
17.public static void main(String[] args) {
18.EventQueue.invokeLater(new Runnable() {
19.public void run() {
20.MyForm form = new MyForm();
21.form.setVisible(true);
22.}
23.});
24.}
25. 
26. 
27.public MyForm() {
28. 
29.// Create Form Frame
30.super("ThaiCreate.Com Tutorial");
31.setSize(450300);
32.setLocation(500280);
33.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
34.getContentPane().setLayout(null);
35. 
36.// Create Dialog
37.JButton btnButton = new JButton("Submit");
38.btnButton.setBounds(171958923);
39.btnButton.addActionListener(new ActionListener() {
40.public void actionPerformed(ActionEvent e) {
41. 
42.JTextField name = new JTextField();
43.JTextField username = new JTextField();
44.JPasswordField password = new JPasswordField();
45.final JComponent[] inputs = new JComponent[] {
46.new JLabel("Name"),
47.name,
48.new JLabel("Username"),
49.username,
50.new JLabel("Password"),
51.password
52.};
53.JOptionPane.showMessageDialog(null, inputs, "My custom dialog", JOptionPane.PLAIN_MESSAGE);
54.System.out.println("You entered " +
55.name.getText() + ", " +
56.username.getText() + ", " +
57.password.getText());
58. 
59.}
60.});
61. 
62.getContentPane().add(btnButton);
63. 
64.}
65. 
66.}

Output

Java GUI : Dialog Input Custom Modal Dialog

คลิกที่ Button เพื่อแสดง Dialog ที่มี Input ข้อมูล

Java GUI : Dialog Input Custom Modal Dialog

กรอกข้อมูใน Input Dialog และหลังจากที่กด OK สามารถ get ค่าได้โดยใช้คำสั่ง

1.System.out.println("You entered " +
2.name.getText() + ", " +
3.username.getText() + ", " +
4.password.getText());

Example 3 : ตัวอย่างการสร้าง Custom Modal Dialog แบบสร้าง Layout ขึ้นมาใหม่อีก Class

MyForm.java เป็น Form หลักไว้เปิด Dialog และแสดงค่าจาก Dialog

01.package com.java.myapp;
02. 
03.import java.awt.EventQueue;
04.import java.awt.event.ActionEvent;
05.import java.awt.event.ActionListener;
06. 
07.import javax.swing.JButton;
08.import javax.swing.JFrame;
09.import javax.swing.JLabel;
10. 
11. 
12.public class MyForm extends JFrame {
13. 
14.public static void main(String[] args) {
15.EventQueue.invokeLater(new Runnable() {
16.public void run() {
17.MyForm form = new MyForm();
18.form.setVisible(true);
19.}
20.});
21.}
22. 
23. 
24.public MyForm() {
25. 
26.// Create Form Frame
27.super("ThaiCreate.Com Tutorial");
28.setSize(450300);
29.setLocation(500280);
30.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
31.getContentPane().setLayout(null);
32. 
33.// Label Result
34.final JLabel lblResult = new JLabel("Result",JLabel.CENTER);
35.lblResult.setBounds(325337014);
36.getContentPane().add(lblResult);
37. 
38.// Create Button Open Dialog
39.JButton btnButton = new JButton("Submit");
40.btnButton.setBounds(171958923);
41.btnButton.addActionListener(new ActionListener() {
42.public void actionPerformed(ActionEvent e) {
43. 
44.MyDialogPopup dialog = new MyDialogPopup();
45.dialog.setModal(true);
46.dialog.setVisible(true);
47. 
48.lblResult.setText(dialog.sName);
49. 
50.}
51.});
52.getContentPane().add(btnButton);
53. 
54. 
55.}
56. 
57.}

Java GUI : Dialog Input Custom Modal Dialog

MyDialogPopup.java เป็น Dialog และ Input ข้อมูล

01.package com.java.myapp;
02. 
03.import javax.swing.JButton;
04.import javax.swing.JDialog;
05. 
06.import java.awt.event.ActionListener;
07.import java.awt.event.ActionEvent;
08.import javax.swing.JTextField;
09. 
10.public class MyDialogPopup extends JDialog {
11. 
12.public String sName;
13. 
14.public static void main(String[] args) {
15.try {
16.MyDialogPopup dialog = new MyDialogPopup();
17.dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
18.dialog.setVisible(true);
19.catch (Exception e) {
20.e.printStackTrace();
21.}
22.}
23. 
24.public MyDialogPopup() {
25.setBounds(100100296175);
26.setResizable(false);
27.setLocationRelativeTo(null);
28.getContentPane().setLayout(null);
29. 
30.// Create Input
31.final JTextField name = new JTextField();
32.name.setBounds(573617520);
33.getContentPane().add(name);
34. 
35.// Button OK
36.JButton btnOK = new JButton("OK");
37.btnOK.addActionListener(new ActionListener() {
38.public void actionPerformed(ActionEvent e) {
39.sName = name.getText();
40.dispose();
41.}
42.});
43.btnOK.setBounds(70937823);
44.getContentPane().add(btnOK);
45. 
46.// Button Cancel
47.JButton btnCancel = new JButton("Cancel");
48.btnCancel.addActionListener(new ActionListener() {
49.public void actionPerformed(ActionEvent e) {
50.sName = "";
51.dispose();
52.}
53.});
54.btnCancel.setBounds(158937423);
55.getContentPane().add(btnCancel);
56. 
57.}
58.}

Java GUI : Dialog Input Custom Modal Dialog

Output

Java GUI : Dialog Input Custom Modal Dialog

แสดง Form หลักคลิกที่ Button เพื่อเปิด Dialog Popup

Java GUI : Dialog Input Custom Modal Dialog

แสดง Dialog Popup และ Input ข้อมูล และเมื่อคลิกที่ OK จะมีการส่งข้อมูลไปยัง Form หลัก

Java GUI : Dialog Input Custom Modal Dialog

แสดงข้อมูลที่ถูกส่งมายัง Dialog Popup

แหล่งที่มา : thaicreate.com/java/java-gui-dialog-popup-custom-modal