Java Swing 是用于创建图形用户界面 (GUI) 的一组 Java 库。以下是 Java Swing 的主要知识点:
1. 基础概念
- Swing 简介:
- Swing 是 Java 的标准 GUI 库,用于创建窗口、按钮、文本框等用户界面组件。
- 它是基于 AWT (Abstract Window Toolkit) 之上的更高级的 GUI 工具包。
- 主要组件:
JFrame
:主窗口。JPanel
:用于组织其他组件的面板。JButton
:按钮。JLabel
:标签。JTextField
:单行文本输入框。JTextArea
:多行文本输入框。JCheckBox
:复选框。JRadioButton
:单选按钮。JComboBox
:下拉列表。JList
:列表。JTable
:表格。JScrollPane
:滚动面板。
2. 事件处理
- 事件模型:
- Swing 使用委派事件模型,事件源对象产生事件,事件监听器处理事件。
- 常见事件:动作事件 (ActionEvent)、鼠标事件 (MouseEvent)、键盘事件 (KeyEvent) 等。
- 事件监听器:
ActionListener
:处理按钮点击等动作事件。MouseListener
:处理鼠标点击、进入、退出等事件。KeyListener
:处理键盘按键事件。- 实现步骤:创建监听器类,实现接口方法,注册监听器到组件。
java复制代码// 示例:按钮点击事件处理
JButton button = new JButton("Click Me");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button clicked!");
}
});
3. 布局管理
-
布局管理器
:
FlowLayout
:按顺序从左到右排列组件,自动换行。BorderLayout
:将容器划分为五个区域:北、南、东、西、中。GridLayout
:将容器划分为等大小的网格。BoxLayout
:在一行或一列中排列组件。GridBagLayout
:更复杂的网格布局,允许组件跨越多个单元格。
java复制代码// 示例:使用 BorderLayout
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.add(new JButton("North"), BorderLayout.NORTH);
frame.add(new JButton("South"), BorderLayout.SOUTH);
frame.add(new JButton("East"), BorderLayout.EAST);
frame.add(new JButton("West"), BorderLayout.WEST);
frame.add(new JButton("Center"), BorderLayout.CENTER);
4. 容器和组件
- JFrame:主窗口。
- 常用方法:
setSize()
,setVisible()
,setDefaultCloseOperation()
,add()
- 常用方法:
- JPanel:用于组织组件的容器。
- 可以嵌套,使用不同的布局管理器。
- JScrollPane:为组件添加滚动功能。
- 常用于
JTextArea
,JList
,JTable
等。
- 常用于
5. 高级组件
- JTable:表格组件。
- 使用
TableModel
进行数据管理。 - 支持排序、过滤、自定义渲染器和编辑器。
- 使用
- JTree:树形结构组件。
- 使用
TreeModel
进行数据管理。
- 使用
- JTabbedPane:选项卡面板,用于在一个窗口中显示多个选项卡。
6. 自定义组件和渲染
- 绘图:
- 使用
paintComponent(Graphics g)
方法在组件上进行自定义绘图。 Graphics
类提供绘制形状、文本、图像的方法。
- 使用
- 自定义渲染器:
- 通过实现
TableCellRenderer
或ListCellRenderer
接口来自定义表格或列表项的显示。
- 通过实现
7. 常用实用类
- Timer:用于定时执行任务。
- SwingWorker:用于后台任务处理,避免阻塞事件调度线程 (EDT)。