电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

高级Swing组件makeover的三要素


发布日期:2023/7/19
 

收到一个朋友的邮件说如何在Swing中实现组件的动画效果就像JIDE的那些组件一样的确Swing框架的灵活性和可扩展性使得它非常适合做这样Makeover工作我简单总结一了以下这种组件不外乎要有以下三种元素

外观华丽这包括使用渐变色线条和字体反走样图标设计漂亮抢眼界面变化要柔和等等但要避免设计太花哨给人华而不实的感觉原则上避免颜色太碎图标应以简洁为主不可滥用图片等技术上没有多大要求主要是美工你需要掌握各种做图工具自己最好有好的审美和设计能力

动画效果组件行为变化要柔和化尽量使用动画效果如淡入淡出滚动弹出等等技术上最常用的方法是使用javaxswingTimer为什么要使用javaxswingTimer这是因为javaxswingTimer触发的事件都在EDT上执行是线程安全的除此外还需掌握Java D的常用接口及图像处理的常见技巧

空间布局这种组件空间布局的特点是立体动态拖拽式的这和人的认知能力有关人类认知的特点是具体到抽象二维静态和键盘式操作对普通用户来说太过抽象和专业化需要一定的辅助学习才能理解的而三维动态拖拽式操作更贴近于感性的认知范畴因此这类组件经常有浮动式窗口组件布局动态变化及拖拽式操作等特征实现技术包括布局管理器(LayoutManager)Swing组件分层结构Swing事件体系结构以及DnD接口等

美工对于java程序员来说可能比较缺乏但是华丽外观不仅仅是美工技术这包括一些宏观设计原则java程序员完全可以通过掌握这些方针原则来提高自己的设计水平前面文章介绍那个《Swing外观设计方针》就是一本这样的书至于美工我觉得如果你有美术天分那就要充分利用;如果没有那么你可以模仿熟悉几种的图形工具就完全可以不用自己的画图做出比较漂亮的图标图片(当然没有考虑版权问题)我就是后者但是我发现我平时只需要PrScrn键(抓图)Paint(Windows 画图工具切图剪裁转换格式)PowerPoint/OpenOffice Imprise(画图)Google Image(搜索图片)就已经足够了其他所需的技术就需要你掌握Swing和Java D方方面面的技术了当然复杂的组件不仅仅是靠掌握这些技术能解决的可能你还需要能比较好地熟悉各种编程模式

这个朋友特别提到Windows上的折叠式操作面板他说

另外我对JIDE中两个东西很感兴趣一个是CollapsiblePanel(Windows Explorer左边的常见任务)点击后折叠展开子面板而且是动画效果

因此昨晚就特地试了一下虽然以前就大概明白使用Timer和布局管理器以及图像处理就可以实现这些东西但一直没有做昨晚的实验还是很成功的大概花了两个小时就实现了这个面板工作过程大概就是分解这些面板组件解析那部分需要动画应该在哪儿触发何种事件另外就是编写这些组件不断调试这个过程的大部分时间都被效果调整占去了你需要不断的运行程序抓取屏幕然后将它帖到Paint中然后放大然后和Windows上的抓图比较包括大小尺寸颜色字体微观变化等等最后算是基本实现了Windows这个折叠式的面板组件下面的是我的演示程序的一个抓图

这个是淡出淡入动画效果

下面的Enable Animation的JCheckBox可以设置是否使用动画效果选择上折叠和展开就具有动画效果

这个组件的类名是dynoswingbeansFolderPane使用比较简单

FolderPane fp=new FolderPane();//设置是否有动画效果缺省没有

fpsetAnimated(true);//添加子面板

fpaddFolder(文件和文件夹任务 getFileFolderPane());

fpaddFolder(其他位置 getOtherPlacePane());

fpaddFolder(详细信息 getDetailsPane());

add(fp BorderLayoutCENTER);

主要接口有两个

设置是否要动画效果

public void setAnimated(boolean b)

添加面板title是面板标题文字content是应用程序组件

public void addFolder(String title JComponent content)

这个演示是一个NetBeans工程编译之后直接双击foldered_panejar既可观看效果源代码中有详细的注解

更新刚刚修改了一下现在可以支持JScrollPane即能放到JScrollPane并能在动画时动态的更新JScrollPane状态

上一篇:我对类,方法 ,接口的认识

下一篇:在软件开发中运用到的编号详细谈