🎨 Java GUI 编程入门:用 Swing 画出你的第一个窗口!
“学 Java 只能写控制台程序?不,今天我们让它‘动’起来!”
在 Java 世界里,GUI(图形用户界面) 让应用程序变得更加生动。想象一下,你的 Java 程序不仅仅是黑白的终端窗口,还可以有按钮、颜色、图片,甚至动画!💡
本篇文章基于 《Head First Java》第 12 章——看图说故事,带你快速掌握 Java GUI 编程的核心知识,并提供实战代码示例,帮助你写出交互式窗口程序!🚀
🎭 Java GUI 开发概述
Java 提供了两种主要的 GUI 库:
✅ AWT(Abstract Window Toolkit) —— Java 早期的 GUI 库,依赖操作系统的本地组件。
✅ Swing —— AWT 的增强版,提供更丰富的 UI 组件,更加灵活、跨平台。
🎨 为什么选择 Swing?
- 轻量级(不依赖操作系统,跨平台无压力)
- 功能丰富(提供按钮、菜单、文本框、表格等 UI 组件)
- 可扩展(支持自定义绘制)
- 事件驱动(可以监听用户输入,制作交互式应用)
今天,我们就用 Swing 来创建 Java GUI 应用!🚀
🏗️ 创建第一个 Java GUI 窗口
📌 目标: 创建一个窗口,里面有一个按钮。
import javax.swing.*;
public class SimpleGui {
public static void main(String[] args) {
JFrame frame = new JFrame("My First GUI"); // 创建窗口
JButton button = new JButton("Click Me!"); // 创建按钮
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序
frame.getContentPane().add(button); // 添加按钮到窗口
frame.setSize(300, 200); // 设置窗口大小
frame.setVisible(true); // 显示窗口
}
}
🖥 运行后效果:
✅ 一个窗口,里面有一个按钮! 🎉
📌 代码解析:
JFrame
是窗口,JButton
是按钮。setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
让窗口关闭时退出程序。getContentPane().add(button)
把按钮放到窗口里。setVisible(true)
让窗口显示出来!
🖌️ Swing 自定义绘制:画一个圆形
📌 目标: 在窗口里画出一个圆形!
import javax.swing.*;
import java.awt.*;
public class MyDrawingPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE); // 设置颜色
g.fillOval(50, 50, 100, 100); // 画一个蓝色的圆
}
public static void main(String[] args) {
JFrame frame = new JFrame("Simple Drawing");
MyDrawingPanel panel = new MyDrawingPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(panel);
frame.setSize(300, 300);
frame.setVisible(true);
}
}
🖥 运行后效果:
✅ 窗口里有一个蓝色的圆形! 🎨
📌 代码解析:
paintComponent(Graphics g)
是 Swing 的绘图方法,Graphics
负责绘制图形。g.fillOval(50, 50, 100, 100)
画了一个直径 100 像素的蓝色圆形。JPanel
组件可以用来绘制自定义图形!
🎭 让按钮控制颜色变化
GUI 不能只是静态的,让它动起来! 👏
📌 目标: 点击按钮,窗口里的矩形颜色会改变!
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ColorChanger {
JFrame frame;
MyDrawingPanel panel;
public static void main(String[] args) {
ColorChanger app = new ColorChanger();
app.go();
}
public void go() {
frame = new JFrame("Click to Change Color");
panel = new MyDrawingPanel();
JButton button = new JButton("Change Color");
button.addActionListener(new ActionListener() { // 监听按钮点击事件
public void actionPerformed(ActionEvent e) {
panel.changeColor(); // 每次点击按钮,颜色改变
frame.repaint();
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(BorderLayout.SOUTH, button); // 按钮放在窗口底部
frame.getContentPane().add(BorderLayout.CENTER, panel);
frame.setSize(400, 400);
frame.setVisible(true);
}
}
class MyDrawingPanel extends JPanel {
private Color color = Color.RED; // 默认颜色
public void changeColor() {
color = new Color((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(color);
g.fillRect(50, 50, 300, 300); // 画一个矩形
}
}
🖥 运行后效果:
✅ 初始显示一个红色矩形,点击按钮,矩形颜色会随机变化! 🎨
📌 代码解析:
ActionListener
监听按钮的点击事件。Math.random()
生成随机颜色值。repaint()
触发paintComponent()
方法,让界面更新!
🏆 进阶思考:做一个图片查看器!
如果你希望加载和显示图片,可以使用 ImageIcon
:
JLabel label = new JLabel(new ImageIcon("your_image.jpg"));
frame.getContentPane().add(label);
📌 扩展练习:
- 📷 制作一个图片相册,点击按钮切换图片。
- 🎵 播放声音(用
javax.sound.sampled.Clip
结合 GUI)。
🎉 结语:用 Swing 让 Java 更生动!
本篇文章带你了解了 Java Swing 的核心知识,包括 窗口创建、绘图、事件监听 等。掌握这些内容,你就可以开发自己的 桌面应用,比如:
✅ 记事本、✅ 画图软件、✅ 电子相册、✅ 小游戏!
💬 你学会了吗?欢迎留言交流,快动手试试吧! 🚀
👉 觉得有用?记得点赞 + 关注,更多 Java 干货持续更新! 💡
微信扫一扫:分享
微信里点“发现”,扫一下
二维码便可将本文分享至朋友圈。