GUI,即图形用户界面,是计算机系统中一种与用户交互的方式,通过图形元素如窗口、按钮、菜单等,使得用户能够更加直观地操作程序。在Java中,GUI主要由两个库支持:AWT(Abstract Window Toolkit)和Swing。AWT是Java早期提供的GUI库,它是跨平台的,包含了一些基本的组件、容器和布局管理器。
AWT的主要组成部分包括:
1. **组件(Components)**:这是用户界面的基本元素,比如按钮、文本框等。
2. **容器(Containers)**:用于容纳和管理组件,如JFrame、JPanel等。
3. **布局管理器(Layout Managers)**:负责决定容器内组件的位置和大小,有BorderLayout、FlowLayout、GridLayout、CardLayout和GridBagLayout五种常见类型。
- **BorderLayout**:将容器分为五个区域(北、南、东、西、中),每个区域只能放置一个组件。
- **FlowLayout**:按照组件添加的顺序依次排放,如果空间不足则换行,不改变组件大小。
- **GridLayout**:将容器划分为网格,每个网格内放置一个组件,行数优先于列数。
- **CardLayout**:允许多个组件在一个容器中,但一次只能显示一个。
- **GridBagLayout**:最复杂的布局,允许组件占据多行多列,具有更多的自定义设置。
Swing是建立在AWT之上的库,提供了一组更丰富的组件和更美观的外观。Swing的容器分为顶级容器(如JFrame)和中间容器(如JPanel),它们也使用了相同的布局管理器。Swing组件包括:
1. **JLabel**:显示文字、图片或作为占位符。
2. **JTextField**:单行文本输入框,使用getText()和setText()获取或设置文本。
3. **JButton**:按钮组件,通常触发事件处理。
4. **JTextArea**:多行文本区域,可嵌入到JScrollPane中实现滚动功能。
5. **JPasswordField**:密码输入框,字符以星号或圆点显示。
6. **JComboBox**:下拉列表,添加和删除条目,获取选中项。
7. **JList**:多行列表,通过DefaultListModel管理条目,获取选中项的索引。
8. **JRadioButton**:单选按钮,通常与ButtonGroup配合使用。
9. **JOptionPane**:用于弹出简单的消息对话框,如警告、确认和输入对话框。
在构建GUI时,开发者需要创建容器,选择合适的布局管理器,然后将组件添加到容器中,并通过监听器处理用户的交互事件。理解并熟练掌握这些基础知识对于构建高效、用户友好的Java GUI应用至关重要。