Java AWT图形用户界面开发完整指南与实战代码示例
本文全面介绍Java AWT工具包的核心功能和使用方法,涵盖GUI组件创建、事件处理机制、布局管理器配置以及图形绘制技术。通过完整的代码示例展示如何构建包含按钮、文本框、复选框、下拉菜单等组件的图形界面应用,详细讲解FlowLayout、BorderLayout、GridLayout等布局管理器的使用场景,并提供图形绘制和菜单系统的实现方案。作为Java GUI编程的基础,AWT虽然已被Swing和JavaFX取代,但仍是理解图形界面开发原理的重要工具。
java.awt (Abstract Window Toolkit) 是 Java 提供的用于构建图形用户界面(GUI)的原始工具包。它提供了创建窗口、按钮、文本框等 GUI 组件的基本类。
主要特点
1、平台无关的 GUI 组件
2、事件处理机制
3、布局管理器
4、基本的图形绘制功能
5、字体和颜色管理
核心组件示例
import java.awt.*;
import java.awt.event.*;
public class AWTExample extends Frame implements ActionListener {
private Label label;
private TextField textField;
private Button button;
private TextArea textArea;
private Checkbox checkbox;
private Choice choice;
private List list;
public AWTExample() {
// 设置窗口属性
setTitle("Java AWT 示例");
setSize(500, 400);
setLayout(new FlowLayout());
// 添加窗口关闭事件
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
// 创建并添加组件
createComponents();
}
private void createComponents() {
// 标签
label = new Label("欢迎使用 AWT!");
add(label);
// 文本框
textField = new TextField(20);
textField.addActionListener(this);
add(new Label("输入文本:"));
add(textField);
// 按钮
button = new Button("点击我");
button.addActionListener(this);
add(button);
// 文本区域
textArea = new TextArea(5, 30);
add(textArea);
// 复选框
checkbox = new Checkbox("选择我");
checkbox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
textArea.append("复选框状态: " + checkbox.getState() + "\n");
}
});
add(checkbox);
// 下拉选择框
choice = new Choice();
choice.add("选项1");
choice.add("选项2");
choice.add("选项3");
choice.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
textArea.append("选择了: " + choice.getSelectedItem() + "\n");
}
});
add(new Label("下拉选择:"));
add(choice);
// 列表
list = new List(3, false);
list.add("列表项1");
list.add("列表项2");
list.add("列表项3");
list.add("列表项4");
list.addActionListener(this);
add(new Label("列表:"));
add(list);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
textArea.append("按钮被点击了!\n");
} else if (e.getSource() == textField) {
textArea.append("文本框输入: " + textField.getText() + "\n");
textField.setText("");
} else if (e.getSource() == list) {
textArea.append("列表选择: " + list.getSelectedItem() + "\n");
}
}
public static void main(String[] args) {
AWTExample example = new AWTExample();
example.setVisible(true);
}
}
布局管理器示例
import java.awt.*;
import java.awt.event.*;
public class LayoutExample extends Frame {
public LayoutExample() {
setTitle("布局管理器示例");
setSize(600, 400);
// 创建选项卡面板展示不同布局
TabbedPane tabbedPane = new TabbedPane();
// FlowLayout 示例
Panel flowPanel = new Panel();
flowPanel.setLayout(new FlowLayout());
flowPanel.add(new Button("按钮1"));
flowPanel.add(new Button("按钮2"));
flowPanel.add(new Button("按钮3"));
flowPanel.add(new Button("按钮4"));
flowPanel.add(new Button("按钮5"));
tabbedPane.add("FlowLayout", flowPanel);
// BorderLayout 示例
Panel borderPanel = new Panel();
borderPanel.setLayout(new BorderLayout());
borderPanel.add(new Button("北"), BorderLayout.NORTH);
borderPanel.add(new Button("南"), BorderLayout.SOUTH);
borderPanel.add(new Button("东"), BorderLayout.EAST);
borderPanel.add(new Button("西"), BorderLayout.WEST);
borderPanel.add(new Button("中"), BorderLayout.CENTER);
tabbedPane.add("BorderLayout", borderPanel);
// GridLayout 示例
Panel gridPanel = new Panel();
gridPanel.setLayout(new GridLayout(3, 2));
gridPanel.add(new Button("(0,0)"));
gridPanel.add(new Button("(0,1)"));
gridPanel.add(new Button("(1,0)"));
gridPanel.add(new Button("(1,1)"));
gridPanel.add(new Button("(2,0)"));
gridPanel.add(new Button("(2,1)"));
tabbedPane.add("GridLayout", gridPanel);
add(tabbedPane);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
}
public static void main(String[] args) {
LayoutExample example = new LayoutExample();
example.setVisible(true);
}
}
图形绘制示例
import java.awt.*;
import java.awt.event.*;
public class DrawingExample extends Frame {
public DrawingExample() {
setTitle("AWT 图形绘制示例");
setSize(500, 400);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
}
@Override
public void paint(Graphics g) {
// 设置颜色
g.setColor(Color.RED);
// 绘制矩形
g.drawRect(50, 50, 100, 80);
g.setColor(Color.BLUE);
g.fillRect(200, 50, 100, 80);
// 绘制椭圆
g.setColor(Color.GREEN);
g.drawOval(50, 150, 100, 80);
g.setColor(Color.ORANGE);
g.fillOval(200, 150, 100, 80);
// 绘制直线
g.setColor(Color.BLACK);
g.drawLine(350, 50, 450, 150);
// 绘制文本
g.setColor(Color.MAGENTA);
g.setFont(new Font("Arial", Font.BOLD, 16));
g.drawString("Java AWT 图形绘制", 150, 300);
// 绘制多边形
int[] xPoints = {350, 400, 450, 400};
int[] yPoints = {250, 200, 250, 300};
g.setColor(Color.CYAN);
g.fillPolygon(xPoints, yPoints, 4);
}
public static void main(String[] args) {
DrawingExample example = new DrawingExample();
example.setVisible(true);
}
}
菜单示例
import java.awt.*;
import java.awt.event.*;
public class MenuExample extends Frame implements ActionListener {
private TextArea textArea;
public MenuExample() {
setTitle("菜单示例");
setSize(500, 400);
// 创建菜单栏
MenuBar menuBar = new MenuBar();
// 文件菜单
Menu fileMenu = new Menu("文件");
MenuItem newItem = new MenuItem("新建");
MenuItem openItem = new MenuItem("打开");
MenuItem saveItem = new MenuItem("保存");
MenuItem exitItem = new MenuItem("退出");
newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
exitItem.addActionListener(this);
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
// 编辑菜单
Menu editMenu = new Menu("编辑");
MenuItem cutItem = new MenuItem("剪切");
MenuItem copyItem = new MenuItem("复制");
MenuItem pasteItem = new MenuItem("粘贴");
cutItem.addActionListener(this);
copyItem.addActionListener(this);
pasteItem.addActionListener(this);
editMenu.add(cutItem);
editMenu.add(copyItem);
editMenu.add(pasteItem);
// 添加菜单到菜单栏
menuBar.add(fileMenu);
menuBar.add(editMenu);
// 设置菜单栏
setMenuBar(menuBar);
// 添加文本区域
textArea = new TextArea();
add(textArea);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
textArea.append("选择了: " + command + "\n");
if ("退出".equals(command)) {
System.exit(0);
}
}
public static void main(String[] args) {
MenuExample example = new MenuExample();
example.setVisible(true);
}
}
总结
Java AWT 提供了构建基本 GUI 应用程序所需的核心组件和功能。虽然现在更常用的是 Swing 和 JavaFX,但 AWT 仍然是 Java GUI 编程的基础,理解 AWT 有助于更好地理解 Java GUI 编程的原理。
AWT 的主要优势:
1、轻量级,性能较好
2、与原生系统集成良好
3、学习曲线平缓
主要局限性:
1、外观依赖于平台
2、组件相对简单
3、功能不如 Swing 和 JavaFX 丰富
最后更新于6月前
本文由人工编写,AI优化,转载请注明原文地址: java.awt使用方法及代码示例