Java Swing和AWT:GUI开发基础区别及示例
Swing和Awt都是Java中用于创建图形用户界面(GUI)的API。尽管它们功能相似,但有一些基本的区别:
更新机制:
- AWT:基于事件驱动,需要手动调用
repaint()
或revalidate()
来更新UI。 - Swing:继承自AWT,引入了MVC(Model-View-Controller)模式,通过监听器自动维护UI。
- AWT:基于事件驱动,需要手动调用
外观设计与组件:
- AWT提供了基本的图形元素,如按钮、文本框等,但风格和布局相对较少。
- Swing基于JavaFX,引入了更丰富的组件,如JPanel、JTable、JList等,并支持CSS样式,提供更现代的UI。
示例:
- AWT示例(创建一个简单的按钮):
```java
import javax.swing.*;
public class AWTButtonExample {
public static void main(String[] args) {
// 创建一个按钮组件
JButton button = new JButton(“Click Me!”);
// 添加事件监听器,当点击按钮时会执行特定操作
button.addActionListener(e -> System.out.println("Button clicked!")));
// 设置窗口大小并显示
JFrame frame = new JFrame("AWT Button Example");
frame.setSize(200, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(button);
// 显示窗口
frame.setVisible(true);
}
}
- Swing示例(创建一个带有文本输入和提交按钮的简单表单):
```java
import javax.swing.*;
import java.awt.*;
public class SwingFormExample {
public static void main(String[] args) {
// 创建主容器,例如JFrame
JFrame frame = new JFrame("Swing Form Example");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建表单组件(JPanel作为容器)
JPanel panel = new JPanel(new GridLayout(2, 1)), true);
panel.setName("Form Panel");
// 添加文本输入组件
JTextField textField = new JTextField(20);
textField.setName("TextField");
panel.add(textField);
// 添加提交按钮
JButton submitButton = new JButton("Submit");
submitButton.setName("SubmitButton");
panel.add(submitButton);
// 将面板添加到主容器中
frame.add(panel);
// 设置窗口可见性
frame.setVisible(true);
}
}
以上示例展示了如何使用AWT创建一个简单的按钮,以及如何使用Swing创建一个带有文本输入和提交按钮的表单。
还没有评论,来说两句吧...