34岁!100天!学会Java编程(Day13-Day15)——Swing编程

双十一

时代的潮流

11月9日-11日,三天转瞬即逝。这几天中国大地上激流涌动:
- 在高层,特朗普访华,给美国带来了高达2500亿美元的签约额,让世界再次见识了中华民族买买买的大手笔;
- 在民间,“双十一”已经变成了比春节还热闹的一个节日,当然不是单身节,而是剁手节,我和老婆也没能免俗,11日凌晨刷手机刷到手疼;
- 在家里,我和老婆重启了造人计划,老婆8号刚从南京回来,9号据说就到了排卵日,自然得抓紧机会努力造人。

艰难的Swing

关注时代之余,我则在晚上和周末继续着我的Java打怪升级之路。
这阶段升级的目标是学会Swing编程,并且将我简陋的“CE项目V1.0”升级到Swing界面的2.0版本。
可是在看知识点和编程实践的过程才发现Swing并不好学:
- 首先是知识点很多,窗体、面板、组件、布局、事件、控件每一项的具体知识点都有不少;
- 其次在Eclipse上每一个页面的布局和显示效果全靠程序代码来调整,没能体现一点所见即所得的精神;
- 然后就是在编程过程中的各种坑,尤其是窗体、面板、组件的各种来回嵌套,以及让人在风中凌乱的布局。
Anyway,学习还是得继续,只当是编程之路上九九八十一难之一难吧,回过头来简单总结一下。

(一)知识点学习

知识点的学习是一个边学边练习的过程,这个偷不得懒,按照《Java从入门到精通》这本书梳理的知识点如下:
Swing知识点

(二)交互界面设计

在网上找了一个专门做用户界面设计的软件叫做Axure,进行了用户交互界面如下:
Axure用户界面设计

(三)代码实现

嗯,终于到了最难的一步,周六在家憋了一天,终于能够用Java代码来实现上面这个用户界面设计,先上图:
CE项目V2.0
总结几点经验:
1. 代码的分层设计与组装。用户界面设计完之后,不光要对界面按组件进行分解,还一定要将组件按层次结构进行分解,然后在代码中按层次结构逐级嵌套,否则组件一多,就很容易凌乱。后面有时间我再上个组件层次结构图,这块说多了都是血泪啊。
2. 图片的读取和表现。为了在首页的其中一个JPanel上插入一张图片,先是用书上的方法不好使,然后上网搜了很多办法,郁闷了很久,终于找到一个靠谱的方法,就是一个ImageIO.read(file)+(Graphics)g.drawImage就能搞定,所以方法还是越简单越靠谱,其他很多复杂的方法实际上都不怎么好用。
3. 用户界面的重绘。在点击“登录/注册”等按钮后,需要将当前页面上加载的JTabbedPane拿下,换上一个JPanel,此后需要使用repaint对整个窗体进行重绘,才能表达出来。下面的“发现”页面由于就在选项卡上,所以不存在这个问题。
4. 事件的设置。事件的类型有很多种,在这个程序中我只是简单使用了ActionListener和ChangeListener,其他的事件后面有机会再进一步摸索。需要注意的是事件都是接口,在添加事件的时候,需要编写一个内部类来实现事件对应的具体操作。另外,一个事件设置一次就可以重复使用,只有remove之后才会失效。
4. 数据交互。这块是用户界面实现后程序的重点,由于时间不足,我只是简单使用了setText和getText命令来进行简单的数据交互,更复杂的交互方式后面再进一步摸索。
大致总结就到这里,下一阶段将进入“CE项目V3.0”开发阶段,将要用上我等待已久的数据库软件Mysql了,终于可以抛弃呆板的txt文档了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值