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

เหตุใดส่วนประกอบ AWT จึงมีน้ำหนักมากในขณะที่ส่วนประกอบ Swing มีน้ำหนักเบาใน Java


  • AWT ย่อมาจาก Abstract Window ToolKit และรองรับการเขียนโปรแกรม Java GUI เป็นไลบรารี GUI แบบพกพาสำหรับแอปพลิเคชัน/แอปเพล็ต Java แบบสแตนด์อโลน AWT ให้การเชื่อมต่อระหว่างแอปพลิเคชันของเรากับ GUI ดั้งเดิมในขณะที่ Java Swing ใช้ชุดส่วนประกอบ GUI ที่สร้างจากเทคโนโลยี AWT และสามารถให้รูปลักษณ์ที่เสียบได้ . Java Swing ถูกใช้งานในภาษาการเขียนโปรแกรม Java ทั้งหมด
  • อย่างแรกเลย ด้วยน้ำหนักที่มาก หมายความว่าโค้ดจะใช้เวลาโหลดมากกว่าและจะใช้ทรัพยากรของระบบมากขึ้น AWT ถือว่ามีน้ำหนักมากเนื่องจากส่วนประกอบนั้นขึ้นอยู่กับระบบปฏิบัติการพื้นฐาน ตัวอย่างเช่น เมื่อเราสร้างวัตถุของ java.awt.Checkbox คลาส ระบบปฏิบัติการพื้นฐานจะสร้างช่องกาเครื่องหมายสำหรับเรา นี่ก็เป็นเหตุผลเช่นกัน ส่วนประกอบ AWT ขึ้นอยู่กับแพลตฟอร์ม
  • ในทางกลับกัน Java Swing . ส่วนใหญ่ ส่วนประกอบถูกนำไปใช้ใน Java เอง ส่วนประกอบระดับบนสุดบางอย่าง เช่น windows ขึ้นอยู่กับระบบปฏิบัติการ แต่ถึงกระนั้น โปรแกรมโดยรวมก็ค่อนข้างเบากว่า AWT
  • Java Swing เป็นเวอร์ชันขั้นสูงและเพิ่มประสิทธิภาพของ AWT และสร้างขึ้นบน AWT ยังคงใช้คลาส AWT จำนวนมากใน Swing ทั้งทางตรงและทางอ้อม สิ่งสำคัญคือต้องทำพื้นฐานของ AWT ก่อนดำเนินการ Java Swing มิฉะนั้น เราจะไม่เข้าใจข้อเท็จจริงพื้นฐานเกี่ยวกับการมอบหมายการควบคุมหลายรายการในขณะที่ GUI ใน Java

ตัวอย่าง

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

ผลลัพธ์

เหตุใดส่วนประกอบ AWT จึงมีน้ำหนักมากในขณะที่ส่วนประกอบ Swing มีน้ำหนักเบาใน Java