Jack Jiang

我的最新工程MobileIMSDK:http://git.oschina.net/jackjiang/MobileIMSDK
posts - 19, comments - 12, trackbacks - 0, articles - 0

【前言】

  传统意义上讲,Swing外观定制相当困难。java1.5里发布的Synth技术在没有可视化工具的前提下,依然不实用。曾今听说SUN将针对Nimbus主题推出一款可视化设计工具,也没有了下文。

  一个稍复杂点的平面效果,受限于技术实现,Swing里也只能像网页一样——切图拼合,但在Swing里这么做代价较大:需要精确切图拼合、复杂的布局、未来定制很困难等等,显然不实用。

  直到接触Android应用的UI改进,循着Android与标准java的渊源,认为NinePatch技术移殖到Swing中有很大的可能,顺利的话有可能完全兼容。最后,一切正如所料。

  接下来也就有了BeautyEye L&F这个项目的想法。

 

【关于 BeautyEye L&F】

  前几年,因对Swing的外观定制有过几次深入实践,因而今年初有了利用NinePatch技术为Swing彻底改头换面一次的想法。

  起先没想完全开发一套LNF,因为明知工作量很大(包括编码,更为困难的是美感与视觉效果的确定),原本只想在Windows LNF的基础上深入改进,以便站在前人的肩膀上快速收工。因熟门熟路,定制起来非常顺手,随着改造的深入,完全定制一套LNF的条件自然成形。

  经众多基础ui素材的积累和借鉴,以及效果精细调整,各组件外观逐渐达到预想的效果,也就萌发了要将此项目分享于互联上,供需要的人使用。

  过程中也难免存在些遗憾——有些更好的想法没有付诸实施,原因在于LNF代码的结构很多时候并不像Swing本身一样优秀(更多时候是LNF创造者们有所保留,因为LNF代码难保一劳永逸),且存在不少未公开API的调用,基于兼容性和未来维护难度的考虑,采取了中庸之道。

  如有喜欢者将甚感欣慰,不喜者也权当技术交流,千万勿喷。你可将其无偿用于测试、学习、甚至商业用途。但禁止在未经授权的情况下用于商业用途等,还请尊重知识产权。

  有兴趣者可加【QQ群:259448663(已满)、2群:217134536 】方便交流。

 

【项目托管地址】

  地址:http://code.google.com/p/beautyeye/ ,内有详尽开发指南及演示程序截图等。

 

【效果预览】

      Part 1/2

        Part 2/2
 

【题后话:关于编写LNF定制系列文章的想法】

  在该项目的目录组织结构上,不同组件都单独开列,目的是设想未来可针对各组件逐一编写教学文章,但可以预见工作量也是不小,必竟个人业余时间有限,而且也不知道是否真有人需要,所以此事暂且放一边,也希望有兴趣者协同开发,从而为Swing LNF定制分享更多的经验,惠及后来者。

       

Feedback

# re: 【原创】符合当前主流审美的原创Swing外观 - BeautyEye L&F 正式发布  回复  更多评论   

2012-09-17 16:29 by chenfeicqq
这个图形界面牛逼啊~!

支持!

# re: 【原创】符合当前主流审美的原创Swing外观 - BeautyEye L&F 正式发布  回复  更多评论   

2012-09-18 06:57 by wsc0918
版主不簡單阿,這界面了不得

# re: 【原创】符合当前主流审美的原创Swing外观 - BeautyEye L&F 正式发布  回复  更多评论   

2012-09-20 16:50 by 亦非鱼
这套外观 在windows系统中最大化的时候,会遮住 屏幕底部的taskbar,windowsXp 和 windows7 都是这样,而且 frame的右下角不能拖拉放大,我的系统是 windows7 64位,也许是我自己系统的环境问题?.我之前改过一个lookandfeel(简单的,个人能力有限) 类似这种 去掉taskbar的高度:
GraphicsConfiguration gc = frame.getGraphicsConfiguration();
Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
Rectangle screenBounds = gc.getBounds();
int x = Math.max(0, screenInsets.left);
int y = Math.max(0, screenInsets.top);
int w = screenBounds.width - (screenInsets.left + screenInsets.right);
int h = screenBounds.height - (screenInsets.top + screenInsets.bottom);
// Keep taskbar visible
frame.setMaximizedBounds(new Rectangle(x, y, w, h));
个人猜测:
可以在 自己的写的Titlepane 里面处理window 事件时,做修改,非专业开发,仅是个人猜测...

# re: 【原创】符合当前主流审美的原创Swing外观 - BeautyEye L&F 正式发布[未登录]  回复  更多评论   

2012-09-20 17:48 by Jack Jiang
@亦非鱼

此问题是java保留了N年也没有FIX的bug,我已纳入优化记录,非常感谢。

# re: 【原创】符合当前主流审美的原创Swing外观 - BeautyEye L&F 正式发布  回复  更多评论   

2012-09-21 16:42 by sun_java_studio@yahoo.com.cn(电玩)
佩服,我也曾经是swing的狂热者

# re: 【原创】符合当前主流审美的原创Swing外观 - BeautyEye L&F 正式发布  回复  更多评论   

2012-09-26 01:54 by 李莫愁
算了,做桌面应用开发的话还是用C++甚至VB等工具吧,毕竟java的强项不在这里。

# re: 【原创】符合当前主流审美的原创Swing外观 - BeautyEye L&F 正式发布  回复  更多评论   

2013-02-20 15:48 by 南瑞路8号
今天早上还在想,为什么swing就不能做的像Android的那么华丽丽效果,下午没想到就搜索到了,学习了,很漂亮。

# re: 【原创】符合当前主流审美的原创Swing外观 - BeautyEye L&F 正式发布  回复  更多评论   

2014-12-10 17:27 by agirls
下不了。呜呜~~~~~

只有注册用户登录后才能发表评论。


网站导航:
 
Jack Jiang的 Mail: jb2011@163.com, 联系QQ: 413980957, 微信: hellojackjiang