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

Tại sao các thành phần AWT có trọng lượng nặng trong khi các thành phần Swing lại có trọng lượng nhẹ trong Java?


  • AWT là viết tắt của Abstract Window ToolKit và nó hỗ trợ lập trình Java GUI. Nó là một thư viện GUI di động cho các ứng dụng / applet Java độc lập. AWT cung cấp kết nối giữa ứng dụng của chúng tôi và GUI gốc trong khi Java Swing triển khai một tập hợp các thành phần GUI dựa trên công nghệ AWT và nó có thể cung cấp giao diện có thể cắm được . Java Swing được triển khai hoàn toàn bằng ngôn ngữ lập trình Java.
  • Trước hết, do có trọng lượng lớn, điều đó có nghĩa là mã sẽ mất nhiều thời gian hơn để tải tương đối và nó sẽ tiêu tốn nhiều tài nguyên Hệ thống hơn. AWT được coi là nặng ký vì các thành phần của nó phụ thuộc vào Hệ điều hành cơ bản. Ví dụ:Khi chúng tôi tạo một đối tượng của java.awt.Checkbox , Hệ điều hành cơ bản của nó sẽ tạo một hộp kiểm cho chúng tôi. Đây cũng là lý do, các thành phần AWT phụ thuộc vào nền tảng.
  • Mặt khác, hầu hết Java Swing các thành phần được thực hiện trong chính Java. Một số thành phần cấp cao nhất như cửa sổ phụ thuộc vào Hệ điều hành. Tuy nhiên, tổng thể chương trình tương đối nhẹ hơn AWT.
  • Java Swing là phiên bản nâng cao và được tối ưu hóa của AWT và nó được xây dựng trên AWT. Tuy nhiên, nhiều lớp AWT được sử dụng trong Swing trực tiếp hoặc gián tiếp. Điều quan trọng là phải làm những điều cơ bản về AWT trước khi tiếp tục với Java Swing. Nếu không, chúng tôi không thể hiểu thông tin cơ bản về một số ủy quyền kiểm soát khi sử dụng GUI trong Java.

Ví dụ

import javax.swing.SwingUtilities;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Test {
   public static void main(String[] args) {
      ApplicationWindow window = new ApplicationWindow();
      window.setVisible(true);
   }
}
class ApplicationWindow extends JFrame {
   public ApplicationWindow() {
      this.setSize(200, 100);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setLayout(new FlowLayout());
      Button exitButton = new Button("Exit");
      exitButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent event) {
            System.exit(0);
         }
      });
      this.add(exitButton);
      JMenuBar menuBar = new JMenuBar();
      JMenu menu = new JMenu("Overlapping Menu");
      JMenuItem menuItem = new JMenuItem("Overlapping Item");
      menu.add(menuItem);
      menuBar.add(menu);
      this.setJMenuBar(menuBar);
      this.validate();
   }
}

Đầu ra

Tại sao các thành phần AWT có trọng lượng nặng trong khi các thành phần Swing lại có trọng lượng nhẹ trong Java?