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(); } }); } }
ผลลัพธ์