วิธีสร้างแอป GUI ใน Java
ภาพรวม
ใน java จะใช้การแกว่งเพื่อสร้างแอปพลิเคชัน GUI มีคุณสมบัติที่แตกต่างกันและนิยมใช้ในการสร้างแอปพลิเคชัน GUI ในภาษาจาวา ในบทความนี้ เราจะกล่าวถึงทั้งหมดเกี่ยวกับไลบรารี swing ใน Java
ชวา สวิง
Swing ได้รับการพัฒนาในจาวาบริสุทธิ์ ส่วนประกอบของวงสวิงสามารถมีรูปลักษณ์และความรู้สึกเหมือนกันในทุกแพลตฟอร์ม และนำเสนอรูปลักษณ์และความรู้สึกที่เสียบปลั๊กได้ ส่วนประกอบของวงสวิงมีน้ำหนักเบา
ตัวอย่าง:
โปรแกรมจาวาสำหรับแสดงโฆษณาและแสดงเฟรม
นำเข้า javax.swing.*;
คลาส F1 ขยาย JFrame{
F1() {
setSize(200,200);
setTitle (“GUI DEMO”);
setLocation(100,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(จริง);
}
โมฆะสาธารณะคงที่หลัก (String args[]){
F1 ฉ= ใหม่ F1();
}
}
เอาท์พุต:
javac F1.java
จาวา F1
ลำดับชั้นของคอนเทนเนอร์
คอนเทนเนอร์ระดับบนสุด:
- วางส่วนประกอบวงสวิง อื่นๆ เพื่อทาสีเอง
- เช่น. JFrame, JDialog, JApplet
- ลดความซับซ้อนของการวางตำแหน่งของส่วนประกอบอะตอม
- เช่น JPanel, JSplitPane, JTabbedPane
- ส่วนประกอบแบบพอเพียงที่นำเสนอข้อมูลและรับข้อมูลจากผู้ใช้
- เช่น JButton, JLabel, JComboBox, JTextField, JTable
- JButton เป็นการใช้งานปุ่ม "push"
- ปุ่มสามารถกำหนดค่าและควบคุมโดยการกระทำได้ในระดับหนึ่ง
- JOptionPane ช่วยให้ป๊อปอัปกล่องโต้ตอบมาตรฐานที่แจ้งให้ผู้ใช้ทราบค่าหรือแจ้งให้ผู้ใช้ทราบบางสิ่งบางอย่างได้อย่างง่ายดาย
- แม้ว่าคลาสอาจดูซับซ้อนเนื่องจากมีเมธอดจำนวนมาก แต่การใช้งานคลาสนี้เกือบทั้งหมดเป็นการเรียกหนึ่งบรรทัดไปยังเมธอดสแตติกแบบ ใดแบบหนึ่ง ที่แสดงด้านล่าง:
เช่นเดียวกับคลาสที่สามารถมีตัวแปรและเมธอดเป็นสมาชิกได้ คลาสยังสามารถมีคลาสอื่นซึ่งเรียกว่าคลาสซ้อน
แนวคิดของคลาสภายในถูกนำมาใช้ใน Java 1.1
การใช้คลาสภายในมีประโยชน์หลายประการ:
- ทำให้โค้ดของคุณอ่านง่ายขึ้น
- อนุญาตให้มีการห่อหุ้มคลาสยูทิลิตี้ภายในคลาสโดยใช้มัน
- ลดความซับซ้อนของกระบวนการเขียนคลาส จึงสนับสนุนให้นักพัฒนาเน้นวัตถุมากขึ้น
ประเภทของชั้นในมีดังนี้:
- สมาชิกชั้นใน
- ชั้นในคงที่
- ชั้นในในท้องถิ่น
- คลาสนิรนาม
การจัดการเหตุการณ์โดยใช้คลาสภายในของสมาชิก:
นำเข้า javax.swing.*;
นำเข้า java.awt.*;
นำเข้า java.awt.event.*;
คลาส M1 ขยาย JFrame
{
ตู้คอนเทนเนอร์ ค;
ปุ่ม J b1, b2;
คลาส L1 ใช้ ActionListener
{
โมฆะสาธารณะ actionPerformed (ActionEvent ae){
ถ้า (ae.getSource () == b1)
{
JOptionPane.showMessageDialog(c, “คุณได้คลิกปุ่ม 1”);
}
ถ้า (ae.getSource () == b2)
{
JOptionPane.showMessageDialog(c,”คุณคลิกปุ่ม 2 แล้ว”);
}
}
}
M1()
{
c=getContentPane();
c.setLayout (ใหม่ FlowLayout ());
b1=new JButton(“คลิก 1”);
b2= new JButton(“คลิก 2”);
c.add(b1);
c.add(b2);
L1 a= ใหม่ L1();
b1.addActionListener(ก);
b2.addActionListener(ก);
}
โมฆะสาธารณะคงที่หลัก (String args[]){
M1 f= ใหม่ M1();
f.setSize(200,200);
f.setTitle (“คลิกปุ่ม”);
f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
f.setVisible (จริง);
}
}
ผู้จัดการเค้าโครง
ตัวจัดการเลย์เอาต์ของ Java จะกำหนดวิธีการจัดเรียงคอมโพเนนต์เมื่อเพิ่มเข้าไปในเฟรม แพ็คเกจ AWTประกอบด้วยคลาสเลย์เอาต์ต่อไปนี้:
- FlowLayout
- BorderLayout
- เค้าโครงตาราง
FlowLayout
เลย์เอาต์โฟลว์จะจัดเรียงส่วนประกอบในโฟลว์ที่มีทิศทาง คล้ายกับบรรทัดข้อความในย่อหน้า จนกว่าจะไม่มีที่ว่างเหลือ แล้วจึงไปยังบรรทัดถัดไป
ตามค่าเริ่มต้น ส่วนประกอบจะอยู่ตรงกลาง โปรแกรมเมอร์สามารถระบุการจัดตำแหน่งโดยใช้หนึ่งในอาร์กิวเมนต์ต่อไปนี้ร่วมกับตัวสร้าง:
- FlowLayout.LEFT
- FlowLayout.CENTER
- FlowLayout.RIGHT
โครงร่างเส้นขอบวางคอนเทนเนอร์ จัดเรียงและปรับขนาดส่วนประกอบให้พอดีกับห้าภูมิภาค: เหนือ ใต้ ตะวันออก ตะวันตก และศูนย์กลาง
แต่ละภูมิภาคอาจมีองค์ประกอบได้ไม่เกินหนึ่งองค์ประกอบและกำหนดโดยค่าคงที่ที่สอดคล้องกัน: NORTH, SOUTH, EAAST, WEST และ CENTER
โปรแกรมเมอร์สามารถระบุภูมิภาคโดยใช้วิธีการเพิ่มต่อไปนี้:
- เพิ่ม (“เหนือ”, b1);
- เพิ่ม (“ใต้”,b2);
- เพิ่ม (“ตะวันออก”,b3);
- เพิ่ม (“ตะวันตก”,b4);
- เพิ่ม (“ศูนย์”,b5);
- เพิ่ม (BorderLayout.NORTH,b1);
- เพิ่ม (BorderLayout.SOUTH,b2);
- เพิ่ม (BorderLayout.EAST,b3);
- เพิ่ม (BorderLayout.WEST,b4);
- เพิ่ม (BorderLayout.CENTER,b5);
หมายเหตุ 2 : การคอมไพล์ล้มเหลวหากชื่อคงที่ไม่ได้เป็นตัวพิมพ์ใหญ่ตามที่แสดง
Note3 : ด้านบนสามารถรวมกันได้เช่นกัน
เจลาเบล
JLabel เป็นพื้นที่แสดงผลสำหรับสตริงข้อความสั้นๆ หรือรูปภาพ หรือทั้งสองอย่าง ป้ายกำกับไม่ตอบสนองต่อเหตุการณ์อินพุต
โปรแกรม:
นำเข้า java.awt.*;
นำเข้า javax.swing.*;
นำเข้า java.awt.event.*;
คลาส S2 ขยาย JFrame{
ตู้คอนเทนเนอร์ ค;
JTextField txt1;
JButton btn1;
JLabel lbl1, lbl2;
S2(){
c=getContentPane();
c.setLayout (ใหม่ FlowLayout ());
lbl1= new JLabel(“ป้อนตัวเลข”);
txt1= ใหม่ JTextField(10);
btn1= new JButton("คำตอบ");
lbl2= JLabel ใหม่ ();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener (ใหม่ L2 ());
}
โมฆะสาธารณะคงที่หลัก (String args[]){
S2 จาก = S2 ใหม่ ();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
จาก.setSize(250,150);
frm.setTitle(“ตัวค้นหาสี่เหลี่ยม”);
fromm.setVisible(จริง);
}
คลาส L2 ใช้ ActionListener{
โมฆะสาธารณะ actionPerformed (ActionEvent ae){
พยายาม{
int = จำนวนเต็ม ParseInt(txt1.getText());
ลอย s= a*a;
lbl2.setText(“สี่เหลี่ยม=”+s);
}
จับ (NumberFormatException จ){
JOptionPane.showMessageDialog(c,”กรุณาใส่จำนวนเต็ม”);
txt1.setText(“ “);
txt1.requestFocus();
}
}
}
}
การจัดการเหตุการณ์บนกระดานสำคัญ
โปรแกรม:
นำเข้า java.awt.*;
นำเข้า javax.swing.*;
นำเข้า java.awt.event.*;
คลาส S7 ขยาย JFrame{
ตู้คอนเทนเนอร์ ค;
JTextField txt1;
JButton btn1;
JLabel lbl1,lbl2;
S7(){
c=getContentPane();
c.setLayout (ใหม่ FlowLayout ());
lbl1= new JLabel(“ป้อนตัวเลข”);
txt1= ใหม่ JTextField(10);
btn1= new JButton("คำตอบ");
lbl2= JLabel ใหม่ ();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener (ใหม่ L2 ());
btn1.addKeyListener (ใหม่ L3 ());
}
โมฆะสาธารณะคงที่หลัก (String args[]){
S7 จาก = S7 ใหม่ ();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
จาก.setSize(250,150);
frm.setTitle(“ตัวค้นหาสี่เหลี่ยม”);
fromm.setVisible(จริง);
}
คลาส L3 ใช้ KeyListener
{
คีย์โมฆะสาธารณะกด (KeyEvent ke)
{
ถ้า (ke.getKeyCode () == KeyEvent.VK_ENTER);
พยายาม{
int = Integer.parseInt(txt1.getText());
ลอย s= a*a;
lbl2.setText('Square='+s');
}
จับ (NumberFormatException จ){
JOptionPane.showMessageDialog(c,”กรุณาใส่จำนวนเต็ม”);
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
คีย์โมฆะสาธารณะเผยแพร่แล้ว (KeyEvent ke){}
โมฆะสาธารณะ keyTyped (KeyEvent ke){}
}
คลาส L2 ใช้ ActionListener{
โมฆะสาธารณะ actionPerformed (ActionEvent ae){
พยายาม{
int = Integer.parseInt(txt1.getText());
ลอย s=a*a;
lbl2.setText(“สี่เหลี่ยม=”+s);
}
จับ (NumberFormatExcepption จ){
JOptionPane.showMessageDialog(c,”กรุณาใส่จำนวนเต็ม”);
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
}
จัดการเหตุการณ์ Windows
โปรแกรม :
นำเข้า java.awt.*;
นำเข้า javax.swing.*;
นำเข้า java.awt.event.*;
คลาส S8 ขยาย JFrame{
ตู้คอนเทนเนอร์ ค;
JTextField txt1;
JButton btn1;
JLabel lbl1,lbl2;
S8(){
c=getContentPane();
c.setLayout (ใหม่ FlowLayout ());
lbl1= new JLabel(“ป้อนตัวเลข”);
txt1= ใหม่ JTextField(10);
btn1= new JButton("คำตอบ");
lbl2= JLabel ใหม่ ();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener (ใหม่ L2 ());
btn1.addKeyLisener (ใหม่ L3 ());
this.addWindowListener (ใหม่ L4());
}
โมฆะสาธารณะคงที่หลัก (String args[]){
S8 จาก = S8 ใหม่ ();
frm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
จาก.setSize(250,150);
frm.setTitle(“ตัวค้นหาสี่เหลี่ยม”);
fromm.setVisible(จริง);
}
คลาส L4 ใช้ WindowListener{
โมฆะสาธารณะ windowActivated (WindowEvent e){}
โมฆะสาธารณะ windowDeactivated (WindowEvent e){}
โมฆะสาธารณะ windowOpened (WindowEvent e){
JOptionPane.showMessageDialog(c,”ยินดีต้อนรับสู่เครื่องคิดเลข Square”);
}
โมฆะสาธารณะ windowClosed (WindowEvent e){}
โมฆะสาธารณะ windowClosing (WindowEvent e){
int output= JOptionPane.showConfirmDialog(c,”คุณต้องการออกหรือไม่”);
ถ้า (เอาต์พุต == JOptionPane.YES_OPTION){
System.exit(1);
}
}
โมฆะสาธารณะ windowIconified(WindowEvent e){}
โมฆะสาธารณะ windowDeiconified (WindowEvent e){}
}
คลาส L2 ใช้ ActionListener{
โมฆะสาธารณะ actionPerformed (ActionEvent ae){
พยายาม{
int a=Integer.parseInt(txt1.getText());
ลอย s=a*a;
lbl2.setText(“สี่เหลี่ยม=”+s);
}
จับ (NumberFormatException จ){
JOptionPane.showMessageDialog(c,”กรุณาใส่จำนวนเต็ม”);
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
คลาส L3 ใช้ KeyListener{
โมฆะสาธารณะกด (KeyEvent ke) {
ถ้า(ke.getKeyCode()==KeyEvent.VK_ENTER){
พยายาม{
int = Integer.parseInt(txt1.getText());
ลอย s=a*a;
lbl2.setText(“สี่เหลี่ยม=”+s);
}
จับ (NumberFormatException จ){
JOptionPane.showMessageDialog(c,”กรุณาใส่จำนวนเต็ม”);
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
คีย์โมฆะสาธารณะเผยแพร่แล้ว (KeyEvent ke){}
โมฆะสาธารณะ keyTyped (KeyEvent ke){}
}
}
บทสรุป
Swing ได้รับการพัฒนาในจาวาบริสุทธิ์และมีการใช้กันอย่างแพร่หลายเนื่องจากมีรูปลักษณ์และความรู้สึกเหมือนกันในทุกแพลตฟอร์มและมีรูปลักษณ์และสัมผัสที่เสียบได้ ฉันหวังว่าคุณจะชอบบทความนี้ โปรดแจ้งให้เราทราบหากมีข้อเสนอแนะใดๆ :) ❤️





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)