Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 305|回复: 0

[Swing学习]高级Swing组件makeover的三要素

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-4 23:56:05 | 显示全部楼层 |阅读模式
    收到一个朋友的邮件说如何在Swing中实现组件的动画效果,就像JIDE的那些组件一样。的确Swing框架的灵活性和可扩展性,使得它非常适合做这样Makeover工作。我简单总结一了以下,这种组件不外乎要有以下三种元素:     1.外观华丽。这包括使用渐变色,线条和字体反走样,图标设计漂亮抢眼,界面变化要柔和等等。但要避免设计太花哨,给人华而不实的感觉。原则上避免颜色太碎,图标应以简洁为主,不可滥用图片等。技术上没有多大要求,主要是美工,你需要掌握各种做图工具,自己最好有好的审美和设计能力。     2.动画效果。组件行为变化要柔和化,尽量使用动画效果,如淡入淡出、滚动弹出等等。技术上最常用的方法是使用javax.swing.Timer。为什么要使用javax.swing.Timer,这是因为javax.swing.Timer触发的事件都在EDT上执行,是线程安全的。除此外还需掌握Java 2D的常用接口及图像处理的常见技巧。
      
       
       
         
       

         
       
      


          3.空间布局。这种组件空间布局的特点是立体、动态、拖拽式的。这和人的认知能力有关。人类认知的特点是具体到抽象。二维、静态和键盘式操作对普通用户来说太过抽象和专业化,需要一定的辅助学习才能理解的。而三维、动态、拖拽式操作更贴近于感性的认知范畴。因此这类组件经常有浮动式窗口、组件布局动态变化及拖拽式操作等特征。实现技术包括布局管理器(LayoutManager)、Swing组件分层结构、Swing事件体系结构以及DnD接口等。   
         美工对于java程序员来说可能比较缺乏,但是华丽外观不仅仅是美工技术,这包括一些宏观设计原则。java程序员完全可以通过掌握这些方针原则来提高自己的设计水平。前面文章介绍那个《Swing外观设计方针》就是一本这样的书。至于美工,我觉得如果你有美术天分,那就要充分利用;如果没有,那么你可以模仿,熟悉几种的图形工具就完全可以不用自己的画图做出比较漂亮的图标、图片(当然没有考虑版权问题)。我就是后者,但是我发现我平时只需要PrScrn键(抓图)、Paint(Windows 画图工具,切图、剪裁、转换格式)、PowerPoint/OpenOffice Imprise(画图)、Google Image(搜索图片)就已经足够了。其他所需的技术就需要你掌握Swing和Java 2D方方面面的技术了。当然复杂的组件不仅仅是靠掌握这些技术能解决的,可能你还需要能比较好地熟悉各种编程模式。   
         这个朋友特别提到Windows上的折叠式操作面板,他说:   
         另外,我对JIDE中两个东西很感兴趣,一个是CollapsiblePanel(Windows Explorer左边的常见任务),点击后折叠、展开子面板,而且是动画效果

         因此昨晚就特地试了一下。虽然以前就大概明白使用Timer和布局管理器以及图像处理就可以实现这些东西,但一直没有做。昨晚的实验还是很成功的,大概花了两个小时就实现了这个面板。工作过程大概就是分解这些面板组件、解析那部分需要动画、应该在哪儿触发何种事件。另外就是编写这些组件,不断调试。这个过程的大部分时间都被效果调整占去了。你需要不断的运行程序,抓取屏幕,然后将它帖到Paint中,然后放大,然后和Windows上的抓图比较,包括大小、尺寸、颜色、字体、微观变化等等。最后算是基本实现了Windows这个折叠式的面板组件。下面的是我的演示程序的一个抓图:
       
    这个是淡出淡入动画效果:
      
       
         下面的Enable Animation的JCheckBox可以设置是否使用动画效果。选择上折叠和展开就具有动画效果。   
         这个组件的类名是dyno.swing.beans.FolderPane。使用比较简单:  
         FolderPane fp=new FolderPane();//设置是否有动画效果,缺省没有     
         fp.setAnimated(true);//添加子面板        
         fp.addFolder("文件和文件夹任务", getFileFolderPane());        
         fp.addFolder("其他位置", getOtherPlacePane());        
         fp.addFolder("详细信息", getDetailsPane());        
         add(fp, BorderLayout.CENTER);   
         主要接口有两个:        
         设置是否要动画效果        
         public void setAnimated(boolean b)
         添加面板,title是面板标题文字,content是应用程序组件
         public void addFolder(String title, JComponent content)
         这个演示是一个NetBeans工程。编译之后,直接双击foldered_pane.jar既可观看效果。源代码中有详细的注解。
         更新:刚刚修改了一下,现在可以支持JScrollPane,即能放到JScrollPane,并能在动画时动态的更新JScrollPane状态。


    复制代码

    源码下载:http://file.javaxxz.com/2014/11/4/235604781.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 13:45 , Processed in 0.339357 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表