Java Swing เป็นชุดของ API ที่มีอินเทอร์เฟซผู้ใช้แบบกราฟิก (GUI ) สำหรับโปรแกรมจาวา Java Swing ได้รับการพัฒนาโดยใช้ API ก่อนหน้านี้ที่เรียกว่า Abstract Windows Toolk มัน (AWT) Java Swing นำเสนอองค์ประกอบ GUI ที่สมบูรณ์และซับซ้อนกว่า AWT ส่วนประกอบ GUI มีตั้งแต่ ระดับง่ายไปจนถึงซับซ้อน ต้นไม้ และ ตาราง . Java Swing ให้รูปลักษณ์และสัมผัสที่เสียบได้ เพื่อให้มีรูปลักษณ์ของโปรแกรม Java ที่เป็นอิสระจากแพลตฟอร์มพื้นฐาน
คุณสมบัติของ Java Swing
Java Swing เป็นแพลตฟอร์มที่ไม่ขึ้นกับกรอบงาน MVC (Model View and Controller)
- รูปลักษณ์ที่เสียบปลั๊กได้ - Java Swing รองรับรูปลักษณ์และความรู้สึกที่หลากหลาย และปัจจุบันรองรับ Windows , UNIX , ลวดลาย และรูปลักษณ์และสัมผัสของโลหะ Java ดั้งเดิม และให้ผู้ใช้เปลี่ยนรูปลักษณ์ขณะใช้งานจริงโดยไม่ต้องรีสตาร์ทแอปพลิเคชัน การทำเช่นนี้ทำให้ผู้ใช้สามารถเลือกเองได้ว่ารูปลักษณ์ไหนดีที่สุดสำหรับพวกเขาในทันที
- ส่วนประกอบที่มีน้ำหนักเบา - ส่วนประกอบ Java swing ทั้งหมด น้ำหนักเบา ยกเว้น คอนเทนเนอร์ระดับบนสุด . น้ำหนักเบา หมายถึงการเรนเดอร์องค์ประกอบหรือลงสีเองโดยใช้การวาดเบื้องต้นของ กราฟิก วัตถุแทนที่จะอาศัยระบบปฏิบัติการโฮสต์ (OS ). ส่งผลให้การนำเสนอแอปพลิเคชันแสดงผลเร็วขึ้นและ ใช้หน่วยความจำน้อยลง กว่าแอปพลิเคชัน Java GUI ก่อนหน้า เช่น AWT
- MVC แบบง่าย - Java Swing ใช้ สถาปัตยกรรม Model-View-Controller ที่เรียบง่าย (MVC ) เป็นการออกแบบหลักที่อยู่เบื้องหลังแต่ละส่วนประกอบที่เรียกว่า model-delegate . ตามสถาปัตยกรรมนี้ แต่ละองค์ประกอบ Java Swing มี รุ่น และ ผู้รับมอบสิทธิ์ UI และปิด มุมมอง และ คอนโทรลเลอร์ ใน MVC สถาปัตยกรรม . ผู้รับมอบสิทธิ์ UI รับผิดชอบการวาดภาพหน้าจอและการจัดการเหตุการณ์ GUI โมเดลมีหน้าที่ในการรักษาข้อมูลหรือสถานะของส่วนประกอบ
ตัวอย่าง
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
// model part
class Model {
private int x;
public Model() {
x = 0;
}
public Model(int x) {
this.x = x;
}
public void setX(){
x++;
}
public int getX() {
return x;
}
}
// view part
class View {
private JFrame frame;
private JLabel label;
private JButton button;
public View(String text) {
frame = new JFrame("View");
frame.getContentPane().setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200,200);
frame.setVisible(true);
label = new JLabel(text);
frame.getContentPane().add(label, BorderLayout.CENTER);
button = new JButton("Button");
frame.getContentPane().add(button, BorderLayout.SOUTH);
}
public JButton getButton() {
return button;
}
public void setText(String text) {
label.setText(text);
}
}
// controller part
class Controller {
private Model model;
private View view;
private ActionListener actionListener;
public Controller(Model model, View view) {
this.model = model;
this.view = view;
}
public void contol() {
actionListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
linkBtnAndLabel();
}
};
view.getButton().addActionListener(actionListener);
}
private void linkBtnAndLabel() {
model.setX();
view.setText(Integer.toString(model.getX()));
}
}
// main class
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
// Look and Feel, Java Look and Feel
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) { }
Model model = new Model(0);
View view = new View("-");
Controller controller = new Controller(model,view);
controller.contol();
}
});
}
} ผลลัพธ์
