Java Swing:从入门到精通,实战经验分享

一、Swing简介
Swing是Java的一个图形用户界面(GUI)工具包,它提供了丰富的组件和布局管理器,使得开发者可以轻松地创建出美观、实用的桌面应用程序。自从Java 1.1版本引入Swing以来,它已经成为Java开发者必备的技能之一。本文将从Swing的入门、进阶到实战,分享我的经验与心得。
二、Swing入门
1. Swing组件
Swing组件包括按钮、文本框、标签、列表框、表格等,它们是构建GUI的基础。以下是一些常用的Swing组件:
(1)按钮(JButton):用于触发事件,如点击按钮执行操作。
(2)文本框(JTextField):用于输入文本。
(3)标签(JLabel):用于显示文本或图片。
(4)列表框(JList):用于显示一系列可选择的项。
(5)表格(JTable):用于显示和编辑数据。
2. 布局管理器
Swing提供了多种布局管理器,用于控制组件在容器中的位置和大小。以下是一些常用的布局管理器:
(1)FlowLayout:按照组件添加的顺序排列。
(2)BorderLayout:将组件放置在容器的五个区域(北、南、东、西、中)。
(3)GridLayout:将组件按照行列排列。
(4)GridBagLayout:灵活地安排组件在容器中的位置。
三、Swing进阶
1. 事件处理
Swing的事件处理机制包括事件源、事件监听器和事件。以下是一些常用的事件监听器:
(1)ActionListener:用于处理按钮点击事件。
(2)MouseListener:用于处理鼠标事件,如点击、移动等。
(3)KeyListener:用于处理键盘事件,如按键、释放等。
2. 组件扩展
Swing组件可以通过继承和扩展来实现自定义功能。以下是一些常用的扩展组件:
(1)JTextField:可以扩展为密码框(JPasswordField)。
(2)JComboBox:可以扩展为下拉列表框(JComboBox)。
(3)JTable:可以扩展为数据表格(JTable)。
四、Swing实战
1. 创建一个简单的计算器
以下是一个使用Swing创建的简单计算器的示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator extends JFrame {
private JTextField firstNumber;
private JTextField secondNumber;
private JButton addButton;
private JButton subtractButton;
private JLabel resultLabel;
public Calculator() {
setTitle("Calculator");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
firstNumber = new JTextField(10);
secondNumber = new JTextField(10);
addButton = new JButton("+");
subtractButton = new JButton("-");
resultLabel = new JLabel("Result: ");
add(firstNumber);
add(secondNumber);
add(addButton);
add(subtractButton);
add(resultLabel);
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int num1 = Integer.parseInt(firstNumber.getText());
int num2 = Integer.parseInt(secondNumber.getText());
int sum = num1 + num2;
resultLabel.setText("Result: " + sum);
}
});
subtractButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int num1 = Integer.parseInt(firstNumber.getText());
int num2 = Integer.parseInt(secondNumber.getText());
int difference = num1 - num2;
resultLabel.setText("Result: " + difference);
}
});
setVisible(true);
}
public static void main(String[] args) {
new Calculator();
}
}
```
2. 创建一个图书管理系统
以下是一个使用Swing创建的图书管理系统的示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
public class BookManager extends JFrame {
private JTextField titleField;
private JTextField authorField;
private JButton addButton;
private JButton deleteButton;
private JList
private DefaultListModel
private List
public BookManager() {
setTitle("Book Manager");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
titleField = new JTextField(20);
authorField = new JTextField(20);
addButton = new JButton("Add");
deleteButton = new JButton("Delete");
bookList = new JList<>();
listModel = new DefaultListModel<>();
books = new ArrayList<>();
listModel.addAll(books);
bookList.setModel(listModel);
JPanel inputPanel = new JPanel();
inputPanel.add(new JLabel("Title:"));
inputPanel.add(titleField);
inputPanel.add(new JLabel("Author:"));
inputPanel.add(authorField);
JPanel buttonPanel = new JPanel();
buttonPanel.add(addButton);
buttonPanel.add(deleteButton);
add(inputPanel, BorderLayout.NORTH);
add(new JScrollPane(bookList), BorderLayout.CENTER);
add(buttonPanel, BorderLayout.SOUTH);
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String title = titleField.getText();
String author = authorField.getText();
String book = title + " by " + author;
books.add(book);
listModel.addElement(book);
titleField.setText("");
authorField.setText("");
}
});
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int index = bookList.getSelectedIndex();
if (index != -1) {
books.remove(index);
listModel.remove(index);
}
}
});
setVisible(true);
}
public static void main(String[] args) {
new BookManager();
}
}
```
五、总结
Swing是Java开发中常用的GUI工具包,它具有丰富的组件和布局管理器,可以帮助开发者轻松地创建出美观、实用的桌面应用程序。本文从Swing的入门、进阶到实战,分享了我在Java Swing开发过程中的经验与心得。希望对大家有所帮助!





