当前位置: 首页 > news >正文

学习 Swing

今天正式在IDEA里开坑Java Swing了。听说Swing能做带窗口的可视化程序,早上新建好 Java 项目、创好类的时候还挺期待,结果一天下来踩了半坑,连带着IDEA的功能都摸明白了好几个。
上午先写最基础的JFrame窗口。照着教程用psvm快捷键敲完主方法,三五行代码创建窗口对象、设标题、设尺寸,信心满满点右上角绿色三角运行 —— 结果等了半天,啥窗口都没弹出来,IDEA 控制台也没报错,进程就安安静静挂着。
我盯着代码翻来覆去看了十分钟,还以为是IDEA抽风,重启了一次项目都没用。后来对着教程逐行比对,才发现漏了一行setVisible(true)——原来Swing窗口默认是隐藏的,不手动设置显示,代码语法全对也白搭。改完再点运行,终于弹出一个灰扑扑的空窗口,我盯着那个小窗口看了好半天,还特意拖动了两下,确认是自己写出来的,居然有点小激动。
高兴没两分钟,又发现不对劲:点窗口右上角的叉号关掉,IDEA 里的运行按钮还亮着红色,进程根本没退出,每次都得手动点停止。查了半天才搞明白,还要加一句setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE),不然默认只是把窗口藏起来,程序还在后台跑。就这么一个空窗口,前前后后改了四五次,亏得 IDEA 里ctrl+z撤销方便,不然光删代码都要删半天。
下午学布局管理器,这玩意儿直接给我整破防了。一开始嫌麻烦不想学布局,直接用setBounds()写死坐标放按钮和标签,IDEA 还特意给这行代码标了浅灰色提示,说不推荐绝对布局,我当时没当回事。结果运行起来一把窗口拉大,所有组件全钉在原地不动,空出来一大片灰底,丑得没法看。
没办法只能老老实实学布局管理器,在 IDEA 里改一行运行一次,来回试了快两个小时:
FlowLayout最省事,组件自动排成一排,满了就换行,但是窗口一拉大,按钮全飘在中间,特别别扭;
BorderLayout分东南西北中五个区,第一次把按钮放 CENTER 区,运行之后按钮直接铺满整个窗口,给我吓一跳;
最后试 GridLayout,按行列排组件,写了个计算器的按钮面板,总算像点样子。
中间还闹了个笑话:写按钮的时候手滑导入了java.awt.Button,不是 Swing 的JButton,IDEA 立刻标了红,我对着报错看了五分钟都没明白哪里错了,最后按alt+enter自动修正导包,才发现是类导错了。
晚上最头疼的是事件监听。学按钮点击事件的时候,教程写匿名内部类,new ActionListener(){ 重写actionPerformed方法 },一堆大括号套在一起,我看着都晕。好在 IDEA 会自动补全方法体,打完匿名类直接回车,自动帮我生成actionPerformed的方法框架,不然光方法名我都可能拼错。
第一次写成功的时候,只是点一下按钮,控制台打印一行 “点击了登录”,还觉得没什么意思。后来试着改成点击按钮修改 JLabel 的文字,运行之后点一下按钮,界面上的字真的变了 —— 那一下突然就有实感了,这不是只能看的界面,是真的能交互的程序。
临睡前凑了个简易登录窗口,放了用户名、密码两个输入框,还有登录和重置两个按钮。点登录用JOptionPane弹提示框,这个方法的重载太多了,IDEA 弹了一堆参数提示,我选了半天才选对,一开始还把标题和消息的参数写反了,弹出来的对话框奇奇怪怪的。虽然代码写得歪歪扭扭,但是运行起来的那一刻,真的比做十道控制台算法题都有成就感。
今天一天学下来,心得主要有三个:
第一,Swing 的组件真的太多了,JFrame、JPanel、JButton、JLabel、JTextField…… 光常用的就十几个,离了 IDEA 的代码补全我根本记不住全拼,但是也不能全依赖补全,不然关了提示啥也写不出来;
第二,IDEA的波浪线提示和alt+enter真的是新手神器,小到导包、大到方法补全,大部分报错按一下都能自动修好,比自己瞎找效率高太多;
第三,绝对不能只看教程不动手。好多知识点看的时候觉得 “就这?很简单”,真自己在 IDEA 里敲代码,不是漏了方法就是参数写错,好多坑只有自己踩过、看着 IDEA 报过错,才记得住。
布局和事件监听应该是接下来的重点,一个管界面长什么样,一个管界面能干嘛。明天打算在 IDEA 里接着做个带菜单栏的简易记事本,再加个文本域,慢慢磨。原来写 GUI 虽然麻烦,但是看着自己写的代码变成一个能点能用的小窗口,还真挺有意思的。

http://www.zskr.cn/news/1526692.html

相关文章:

  • PowerQUICC II通信处理器实战:从双引擎架构到多协议处理
  • 2026人力资源全链条咨询机构评测:从战略解码到国企改革的一体化解决方案 - 互联网科技品牌测评
  • PotatoNV深度实战:华为麒麟设备Bootloader解锁完全解决方案
  • 从登录到调用:手把手用Flask和JWT实现一个完整的API鉴权流程(附代码)
  • CANN AMCT量化压缩工具包深度技术解析:PTQ量化算法与昇腾NPU低比特运算的精度-性能权衡全景解读
  • 如何轻松下载B站视频:从大会员4K到充电专属内容的完整指南
  • 从DCNv1到v3:手把手带你用PyTorch复现可变形卷积的演进(含调参避坑指南)
  • 2026年6月南京热风循环烘箱厂家:合规性与适配性实测对比 - 奔跑123
  • 2026年流量计厂家推荐排行榜:电磁/涡街/涡轮/智能/防爆/污水/化工流量计公司精选,技术实力与行业口碑深度盘点 - 品牌发掘
  • 商铺租金水电一体化管理平台测评
  • 2026青岛配眼镜推荐,多少钱场景价格指南 - 配眼镜新资讯
  • 2026深圳电商财税合规公司排行:3家标杆服务商维度对比 - 互联网科技品牌测评
  • BiliDownload终极指南:如何高效获取B站无水印视频的完整教程
  • 5分钟快速上手缠论分析:通达信免费插件完全指南
  • 巴西市政公司开源模型杀进全球第一、Google把300万颗TPU交给英特尔、A股重回4000点
  • 从星载SAR到微型无人机SAR:分辨率公式背后的工程权衡与选型指南
  • eSDHC控制器:从硬件信号到软件驱动的嵌入式SD卡存储系统解析
  • 革命性Python百度搜索API:免费无限制的智能搜索引擎集成方案
  • 收银机屏幕分辨率----------------电脑就做电脑该做的自动化工作
  • 【Kafka源码解读和使用指南】第66篇:Kafka生产环境系统可靠性验证——测试套件与混沌工程
  • 开会再也不用疯狂写字,5个AI直接输出完整纪要
  • 深入解析MPC7450 L2缓存:刷新、无效化、替换算法与ECC机制
  • 2026年10款主流低代码开发平台深度解析
  • 数据驱动算法设计技术手册:从手工启发式到可学习求解器
  • 手写纪要太费时间,5款AI工具一键生成全套会议文稿
  • STM32F103C8T6 + HX711 + 电子秤模块:CubeMX配置与滤波实战(附完整代码)
  • 学习型搜索与启发式算法完全解析
  • 华硕笔记本终极控制方案:如何用G-Helper彻底摆脱Armoury Crate的臃肿束缚
  • 告别静态图表!用PyQt+Matplotlib打造媲美ECharts的交互式数据看板(附完整代码)
  • Vim 替换字符串(超详细)