为什么Java中的AWT组件是重量级的,而Swing组件是轻量级的?
- AWT代表抽象窗口工具包,它支持Java GUI编程。它是一个用于独立Java应用程序/小程序的可移植GUI库。AWT提供应用程序和原生GUI之间的连接,而Java Swing实现了一组基于AWT技术的GUI组件,并且可以提供可插拔的外观和感觉。Java Swing完全用Java编程语言实现。
- 首先,重量级意味着代码加载需要相对更多时间,并且会消耗更多系统资源。AWT被认为是重量级的,因为它的组件依赖于底层操作系统。例如,当我们创建一个java.awt.Checkbox类的对象时,其底层操作系统将为我们生成一个复选框。这也是AWT组件依赖于平台的原因。
- 另一方面,大多数Java Swing组件是在Java本身中实现的。一些顶级组件(如窗口)依赖于操作系统。但总的来说,程序比AWT轻量级。
- Java Swing是AWT的改进和优化版本,它构建在AWT之上。尽管如此,许多AWT类在Swing中被直接或间接地使用。在继续学习Java Swing之前,掌握AWT的基础知识非常重要。否则,我们无法理解Java GUI中一些控制委托的底层原理。
示例
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();
}
}输出
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP