Computer >> Máy Tính >  >> Lập trình >> Java

Giải thích kiến ​​trúc của Java Swing trong Java?


Java Swing là một tập hợp các API cung cấp giao diện người dùng đồ họa ( GUI ) cho các chương trình java. Java Swing được phát triển dựa trên các API trước đó được gọi là Công cụ Windows Tóm tắt it (AWT). Java Swing cung cấp các thành phần GUI phong phú và phức tạp hơn AWT. Các thành phần GUI khác nhau từ mức độ đơn giản đến mức độ phức tạp cây bảng . Java Swing cung cấp giao diện có thể cắm được để cho phép giao diện các chương trình Java độc lập với nền tảng bên dưới.

Các tính năng của Java Swing

Java Swing độc lập với nền tảng và tuân theo khung MVC (Model View and Controller).

  • Giao diện dễ chịu - Java Swing hỗ trợ một số giao diện và hiện hỗ trợ Windows , UNIX , Mô hình giao diện kim loại Java nguyên bản và cho phép người dùng chuyển đổi giao diện trong thời gian chạy mà không cần khởi động lại ứng dụng. Bằng cách này, người dùng có thể tự mình đưa ra lựa chọn để chọn giao diện nào phù hợp nhất với họ ngay lập tức.
  • Các thành phần nhẹ - Tất cả các thành phần Java swing đều nhẹ ngoại trừ một số vùng chứa cấp cao nhất . A Nhẹ có nghĩa là thành phần hiển thị hoặc vẽ chính nó bằng cách sử dụng bản vẽ gốc của Đồ họa đối tượng thay vì dựa vào hệ điều hành máy chủ ( OS ). Do đó, bản trình bày ứng dụng được hiển thị nhanh hơn và tiêu tốn ít bộ nhớ hơn so với các ứng dụng Java GUI trước đây như AWT.
  • MVC được đơn giản hóa - Java Swing sử dụng kiến ​​trúc Model-View-Controller đơn giản hóa ( MVC ) là thiết kế cốt lõi đằng sau mỗi thành phần của nó được gọi là model-ủy quyền . Dựa trên kiến ​​trúc này, mỗi thành phần Java Swing chứa một mô hình đại biểu giao diện người dùng và kết thúc một chế độ xem và một bộ điều khiển trong MVC kiến ​​trúc . Người đại diện giao diện người dùng chịu trách nhiệm vẽ màn hình và xử lý các sự kiện GUI. Model chịu trách nhiệm duy trì thông tin hoặc trạng thái của thành phần.

Ví dụ

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

Đầu ra

Giải thích kiến ​​trúc của Java Swing trong Java?