Java GUI 编程实战:使用 Swing 构建现代化桌面应用
代码语言:javascriptAI代码解释java复制编辑ImageIcon icon = new ImageIcon("icon.png");
·
认识 Java Swing
Swing 是 Java 提供的 GUI 工具包,位于 javax.swing 包中,常见组件包括:
|
组件 |
说明 |
|---|---|
|
JFrame |
主窗口 |
|
JPanel |
面板容器 |
|
JButton |
按钮 |
|
JLabel |
标签文本 |
|
JTextField |
单行文本输入框 |
|
JTextArea |
多行文本输入框 |
|
JCheckBox |
复选框 |
|
JRadioButton |
单选框 |
示例界面结构图:
代码语言:javascript
AI代码解释
lua复制编辑+-------------------------------+
| JFrame 窗口 |
| +-------------------------+ |
| | JPanel 面板 | |
| | Label TextField Button | |
| +-------------------------+ |
+-------------------------------+
三、第一个 GUI 应用:窗口 + 标签 + 按钮
代码语言:javascript
AI代码解释
java复制编辑import javax.swing.*;
public class HelloSwing {
public static void main(String[] args) {
JFrame frame = new JFrame("我的第一个窗口");
JLabel label = new JLabel("欢迎使用 Java Swing!");
frame.add(label); // 添加标签
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
效果图示意:
🖼️(窗口中居中显示一段文字)
四、添加按钮和事件监听器
代码语言:javascript
AI代码解释
java复制编辑import javax.swing.*;
import java.awt.event.*;
public class ButtonExample {
public static void main(String[] args) {
JFrame frame = new JFrame("按钮示例");
JButton button = new JButton("点击我");
JLabel label = new JLabel("等待点击...");
button.addActionListener(e -> label.setText("按钮已点击"));
JPanel panel = new JPanel();
panel.add(button);
panel.add(label);
frame.add(panel);
frame.setSize(300, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
🖼️ 图示:按钮 + 标签点击后变更内容
五、布局管理器详解
5.1 FlowLayout(流式布局)
组件从左到右排列,超出换行:
代码语言:javascript
AI代码解释
java复制编辑frame.setLayout(new FlowLayout());
5.2 BorderLayout(边界布局)
代码语言:javascript
AI代码解释
java复制编辑frame.setLayout(new BorderLayout());
frame.add(button, BorderLayout.SOUTH);
5.3 GridLayout(网格布局)
代码语言:javascript
AI代码解释
java复制编辑frame.setLayout(new GridLayout(2, 2)); // 两行两列
🖼️ 图示:按钮在南边、输入框在中部、布局均匀分布
六、综合实战:登录窗口开发
我们来实现一个带有“用户名 + 密码 + 登录按钮”的简易登录界面。
代码语言:javascript
AI代码解释
java复制编辑import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class LoginForm {
public static void main(String[] args) {
JFrame frame = new JFrame("登录窗口");
JLabel userLabel = new JLabel("用户名:");
JTextField userText = new JTextField(15);
JLabel passLabel = new JLabel("密码:");
JPasswordField passText = new JPasswordField(15);
JButton loginButton = new JButton("登录");
JLabel resultLabel = new JLabel("");
loginButton.addActionListener(e -> {
String user = userText.getText();
String pass = new String(passText.getPassword());
if ("admin".equals(user) && "1234".equals(pass)) {
resultLabel.setText("登录成功!");
} else {
resultLabel.setText("用户名或密码错误");
}
});
JPanel panel = new JPanel(new GridLayout(4, 2));
panel.add(userLabel);
panel.add(userText);
panel.add(passLabel);
panel.add(passText);
panel.add(new JLabel()); // 空白
panel.add(loginButton);
panel.add(new JLabel());
panel.add(resultLabel);
frame.add(panel);
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
🖼️ 图示:用户输入框 + 密码框 + 登录按钮 + 登录结果提示
七、自定义图标与样式美化
7.1 设置窗口图标
代码语言:javascript
AI代码解释
java复制编辑ImageIcon icon = new ImageIcon("icon.png");
frame.setIconImage(icon.getImage());
7.2 更换界面风格
代码语言:javascript
AI代码解释
java复制编辑UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
八、项目实战建议
- 使用 MVC 模式组织 GUI 项目
- 事件响应写在控制层,界面仅负责展示
- 使用
JTable管理数据表格 - 使用
SwingWorker实现后台线程处理
更多推荐



所有评论(0)