- AWT ย่อมาจาก Abstract Window ToolKit และรองรับ Java GUI programming เป็น portable GUI library สำหรับ stand-alone Java applications/applets AWT ให้การเชื่อมต่อระหว่างแอปพลิเคชันของเรากับ native GUI ในขณะที่ Java Swing implement ชุด GUI components ที่สร้างบน AWT technology และให้ pluggable look and feel Java Swing implement อย่างสมบูรณ์ในภาษา Java programming language
- Heavy-weight หมายถึงโค้ดใช้เวลาโหลดค่อนข้างมาก และ consume system resources มากกว่า AWT ถือว่าเป็น heavy-weight เพราะ components ของมัน ขึ้นอยู่กับ underlying Operating System ตัวอย่างเช่น เมื่อสร้าง object ของ java.awt.Checkbox class underlying OS จะสร้าง checkbox ให้เรา นี่คือเหตุผลที่ AWT components เป็น platform dependent
- ทางฝั่งตรงข้าม ส่วนใหญ่ของ Java Swing components ถูก implement ใน Java เอง บาง top-level components เช่น windows ยังขึ้นกับ OS แต่โดยรวมโปรแกรมเบากว่า AWT ค่อนข้างมาก
- Java Swing เป็น version ที่ advanced และ optimized ของ AWT และสร้างบน AWT ยังคงมีหลาย AWT classes ที่ใช้ใน Swing โดยตรงหรือโดยอ้อม สำคัญที่ต้องทำ basics ของ AWT ก่อนไป Swing ไม่งั้นไม่เข้าใจ underlying facts เกี่ยวกับ control delegations ใน 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();
}
}
ผลลัพธ์
