专栏首页程序员的碎碎念你用JavaGUI做的课程设计是这样子的吗?

你用JavaGUI做的课程设计是这样子的吗?

很多人学完《Java基础教程》后,接着一般都会用GUI来做一下课程设计,多数同学通常选择用插件WindowBuilder来设计程序的界面,认为用插件做会更快更高效率,但是,这样做出来的界面是不是和XP老系统的外观一样呢?很多人在win10上运行的程序,界面是扁平化的,当然看不出明显的粗糙之感,但一旦移植到win7上运行,效果便会大打折扣,就像下图一样:

其实,众所周知的是,很多软件不是用Java来写的,所以大家对Java的GUI编程便不会那么重视,认为其能实现功能就好,那Java的GUI编程能不能把界面做得像其他语言编写的界面一样美观呢?答案是可以的,这次小编就用Java的GUI模仿有道词典的外观来做一次课程设计,把Java的GUI认认真真地熟悉一遍,而且不使用WindowBuilder插件。

下图便是小编经过几个星期的设计得出的一个GUI程序,并附上有道词典的主界面对比一下:

其次是各种界面的外观:

登录界面、注册界面

而且鼠标移动到各种功能按钮时的按钮的字体会变颜色,点击后,按钮的背景颜色也改变,用以表示选中的是什么按钮。

如果使用原来默认的组件属性是达不到这种效果的,整个框架需要取消Frame以及弹出窗口Dialog原来的边框显示,取消后也就没有了最小最大化按钮和退出按钮,需要自己添加上去,为了达到按钮和标题栏融为一体的外观效果,本人就用PPT设计了几个按钮图标作为背景,图标和标题栏一样使用(204,51,51)背景色,如下图:

这样就只需要直接用这些图标作为鼠标进入和离开按钮时的背景即可达到有道词典最大最小化按钮的显示效果,但取消边框后的窗体是不能被移动的,这时候需要设置一些联动参数:

而且,左边一栏功能按钮随鼠标移动的显示效果也需要设计两个函数来实现(哈哈,不好意思,下面这俩函数略显笨拙,但它们还是把效果实现了):

可以看出,前前后后都是利用GUI各类组件所共有的setBounds()、setBackground()、setFont()等设置属性的方法,加上一些做动作的函数,便可以把原来看起来一般的界面来个大翻身。

还有很多地方因小编文笔浅陋而困惑如何表述,如果想了解这个程序,可以加QQ资源群689770833(因为小编的百度网盘装满了……)下载小编写的程序——小小图书管理系统(无数据库),直接导入eclipse可用。当然,群里也有实现了把内容保存到数据库的文件——图书管理系统(有数据库),使用的是MySQL,自行下载后导入eclipse和数据库即可使用。

本文分享自微信公众号 - 程序员的碎碎念(gh_53e607dd4782),作者:一个小混蛋

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LeetCode 每日一题344: 反转字符串

    今天依旧是一道简单难度的题目, 腾讯校招精选的 50 题简单难度部分即将完结, 继续加油吧

    benny
  • 使用 Django Ueditor 富文本编辑器(一)

    很简单的,直接把自己想要使用富文本编辑器的字段应用为UeditorField就可以了:

    benny
  • Django Ueditor二次展示富文本内容(三)

    因为这次是二次展示,是有文章内容的,所以我们应该把文章内容按照富文本的原样格式放到富文本编辑器中展示出来,我们可以用js来实现:

    benny
  • ggalluvial做图

    ggalluvial是依赖于ggplot做alluvial plot的一个R包。官方文档:https://cran.r-project.org/web/pack...

    生信编程日常
  • 前端小零碎

    当进行事件绑定的时候可以直接obj.onclick=function(){}进行操作。当是进行for循环进行事件绑定就会出现问题,只会监听到最后数组最后的数据。

    陈灬大灬海
  • 源码分析 Node 的 Cluster 模块

    前段时间,公司的洋彬哥老哥遇到一个问题,大概就是本机有个node的http服务器,但是每次请求这个服务器的端口返回的数据都报错,一看返回的数据根本不是http的...

    五月君
  • 云服务:选公有还是私有?

    一直以来,企业都会说不会将敏感信息放在公有云上,尤其是AWS(亚马逊网络服务),他们一直很关心控制权和安全,不会将自己的应用托管在别人的公共数据中心。在亚马逊的...

    静一
  • Android谈谈封装那些事--BaseActivity和BaseFragment(二)

    版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/53...

    Hankkin
  • 移动端touch事件无视disabled属性 转

    先上个 demo ,点击全屏查看,切换到移动模拟模式,并点击按钮,查看控制台。发现click没有事件没有触发,而touch事件依然触发。

    山河木马
  • PostgreSQL 分区表为什么要带 pg_pathman 过时了?

    PostgreSQL 如果使用较早的“大仙”们,在做分区的时候会提pg_pathman,为什么一个数据库使用分区表还要一个插件,可能习惯商业数据库的“人儿们”,...

    AustinDatabases

扫码关注云+社区

领取腾讯云代金券