Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

อธิบายสถาปัตยกรรมของ Java Swing ใน Java?


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();
         }
      });
   }
}

ผลลัพธ์

อธิบายสถาปัตยกรรมของ Java Swing ใน Java?