一、项目简介

本项目基于 Java Swing + OpenWeatherMap 免费天气 API 开发桌面版天气预报系统,采用纯 Java 单文件开发,无需复杂框架依赖。

项目集成实时天气查询、5 天逐 3 小时预报、空气质量监测、温度趋势图表、中英文切换、深浅色主题、搜索历史、自动定时刷新等完整功能。

通过原生 HttpURLConnection 请求网络接口,解析 JSON 天气数据,结合 Swing 做 GUI 界面渲染与自定义图表绘制,是非常适合 Java 课程设计、Swing 桌面编程、网络请求与 JSON 解析的综合实战项目。

二、技术栈与运行环境

开发环境

  • JDK:JDK8 及以上
  • 开发工具:IntelliJ IDEA / Eclipse
  • 运行平台:Windows / MacOS 通用
  • 项目时间:2025 年

核心技术

  • Java Swing:桌面窗体、面板布局、按钮与事件监听
  • HttpURLConnection:原生 Java 网络 GET 请求
  • org.json:解析接口返回的 JSON 天气数据
  • Graphics2D:自定义绘制温度趋势折线图
  • Timer 定时器:实现天气自动刷新
  • 资源配置:简易中英文国际化、主题配色切换

三、原有系统核心功能

原代码为完整 WeatherForecastApp 主类,继承 JFrame 窗体,模块化实现十大功能:

  1. 英文城市名实时天气查询
  2. 未来 5 天每 3 小时精细化天气预报
  3. AQI 空气质量指数 + 各项污染物浓度展示
  4. 日出日落、风向、风速、能见度、云量等详细气象参数
  5. 一键中英文双语切换
  6. 浅色 / 深色双主题切换
  7. 城市搜索历史记录,双击快速查询
  8. 定时自动刷新天气数据
  9. 温度趋势可视化图表
  10. 内置穿衣建议、出行建议、运动建议、数据导出等工具功能

界面采用选项卡分页布局,分为:当前天气、天气预报、详细信息、空气质量、温度图表五大模块,结构清晰,交互简洁。

四、项目整体架构解析

整个项目只有一个主类,层次划分非常清晰:

  1. 常量配置层:API 密钥、接口地址、请求参数统一管理
  2. 界面组件层:窗体、输入框、按钮、表格、标签页等所有 UI 控件
  3. 初始化层:语言资源、天气图标、主界面、菜单栏、状态栏初始化
  4. 网络请求层:封装 HTTP 请求,处理超时、状态码、异常捕获
  5. 数据解析层:解析实时天气、预报、空气质量 JSON 数据
  6. 界面渲染层:自动更新面板、表格、空气质量、趋势图表
  7. 工具方法层:时间格式化、风向转换、AQI 等级、温湿度计算
  8. 拓展功能层:数据导出、统计分析、本地配置保存、帮助说明

五、二次开发优化与新增功能

原有不足

  • 仅支持英文城市名,无法直接输入中文
  • 网络异常提示不够友好
  • 部分图表布局容易错位
  • 配置与历史记录无法本地持久化

优化与新增

  1. 适配中文城市名搜索,自动编码兼容 API 接口
  2. 优化网络异常、城市不存在的中文弹窗提示
  3. 修复图表坐标偏移、文字重叠问题
  4. 新增极端天气预警:大风、暴雨、雷暴、雾霾弹窗提醒
  5. 支持天气数据导出为 CSV 文件
  6. 主题、语言、自动刷新、搜索记录本地保存

六、运行效果简述

  • 主界面:顶部搜索栏 + 语言主题选择 + 左侧历史记录 + 中间多标签页面板
  • 当前天气:城市信息、天气图标、温度、体感、湿度、气压、日出日落一目了然
  • 天气预报:表格展示时间、温度、湿度、风速、云量等完整预报数据
  • 空气质量:AQI 等级颜色标注,PM2.5、NO₂、SO₂等污染物浓度清晰展示
  • 趋势图表:红色温度折线、蓝色体感虚线,自动适配坐标与刻度

七、开发难点与解决方案

  1. 中文城市无法查询对中文城市名进行 UTF-8 URL 编码,适配 OpenWeatherMap 接口规则。

  2. 网络请求卡顿 UI使用 SwingWorker 异步子线程请求网络,不阻塞主线程界面。

  3. JSON 字段缺失程序崩溃封装安全获取 JSON 字段工具方法,缺失字段自动赋默认值,增强健壮性。

  4. 自定义图表绘制复杂自动计算最高 / 最低温度区间,动态映射画布像素坐标,自适应窗口大小。

八、项目总结

本项目涵盖 Swing 桌面 GUI、网络请求、JSON 解析、自定义绘图、国际化、主题美化 等 Java 核心知识点,代码结构规范、注释完整、功能完善。

既可直接作为Java 课程设计、大作业、实训项目,也可作为技术博客分享、Swing 入门实战案例。项目扩展性极强,可继续开发多城市收藏、语音播报、打包 EXE 程序等进阶功能。

更多推荐