用开源look&feel (substance)写 漂亮的swing应用程序 -凯发k8网页登录

其实程序员也懂得浪漫!
posts - 90, comments - 637, trackbacks - 0, articles - 2
  凯发k8网页登录-凯发天生赢家一触即发官网 :: 凯发k8网页登录首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
    今天用swing 做了一个模仿qq2009的登录界面,用到了开源的look&feel (substance),在使用的过程中遇到了一些问题,也学到了一些技巧。
substance (https://substance.dev.java.net)有很多的外观可以选择,而且都很漂亮,还提供了强大的api供开发者使用。substance 现在已经
发展到5.2rc 版了,一开始我使用的是5.1版,但是在使用的过程中发现了一些bug,当我使用substance中提供的水印功能时,出现了许多的异常,这个bug在5.0的时候是没有的,后来我又下载了最新的5.2rc版,这个问题在5.2版中已经解决了。大家如果需要的话,可以点   。

第一个问题:如何完整的使用look&feel?


大家可能会问了,什么叫着完整的使用look&feel?这里先不急着说明,先让大家看一副截图;



大家看看上面幅图是否已经用了look&feel?  答案是正确的,但是并不完整,因为他的标题栏还没有改变,完整的使用look&feel后的截图如下:



是不是觉得很不一样了呢?对于swing 的老手来说,这个是小菜一碟,但是对于新手来说就比较困难了,因为他们看到的使用look&feel的许多教程都是像
这样的:
  uimanager.setlookandfeel(new substanceofficeblue2007lookandfeel());
或者这样:
try {
      uimanager.setlookandfeel(
"org.jvnet.substance.skin.substanceravengraphitelookandfeel");
    } 
catch (exception e) {
      system.out.println(
"substance raven graphite failed to initialize");
    }

或者说是我自己太菜了吧。总之我在认真学习swing的外观使用之前我是不知道该如何使标题栏也改变的。
要改变标题栏其实只要一句话就够了,就是在main方法中添加这么一句:
 jframe.setdefaultlookandfeeldecorated(true);
如果想要让jdialog也改变的话,还要再加上: jdilog.setdefaultlookandfeeldecorated(true);

下面是最终完成的界面,使用的是substance中 officeblue2007lookandfeel



第二个问题,如何给应用程序添加水印或者说是背景?

官方的文档说的很少,也没有具体的使用例子说明,后来下载了substance的源码来看才发现该如何使用。

以下就是我参考官方源码写的在main方法中的一段核心代码

jframe.setdefaultlookandfeeldecorated(true);
jdialog.setdefaultlookandfeeldecorated(true);
try {
            substanceimagewatermark watermark 
= new substanceimagewatermark(loginframe.class.getresourceasstream("/demo/001.jpg"));
            watermark.setkind(imagewatermarkkind.screen_center_scale);
            substanceskin skin 
= new officeblue2007skin().withwatermark(watermark);   //初始化有水印的皮肤

          
 uimanager.setlookandfeel(new substanceofficeblue2007lookandfeel());
            substancelookandfeel.setskin(skin);  //设置皮肤
           
        } 
catch (unsupportedlookandfeelexception ex) {
            logger.getlogger(loginframe.
class.getname()).log(level.severe, null, ex);
        }

上面的代码中有一句代码的位置是不能变的,那就是 substancelookandfeel.setskin(skin);
它必须要在 uimanager.setlookandfeel(new substanceofficeblue2007lookandfeel()); 这句的下面。
否则你看不到水印的效果。下图是有水印和没水印的对比图(左边的是有水印的,右边的是没水印的):



再贴一张官方的一张截图:大家看看swing写的 office2007 界面如何?



评论

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-23 20:57 by
good

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-23 21:01 by
非常好

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-23 23:04 by
真的很不错~~~

# re: 用开源look&feel (substance)写 漂亮的swing应用程序[未登录]  回复     

2009-05-23 23:48 by
用过,感觉好多的开源的swing ui外观都不错~~~~

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-24 01:01 by
使用金典登陆窗口

请问什么叫“金典”

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-24 06:46 by huliqing
看起来确实很棒子

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-24 08:46 by 日月雨林@gmail.com
@003
不好意思,打字快了点写程序的时候没注意,谢谢你的提醒,应该是“经典” 才对。

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-24 12:28 by beansoft
不错啊 话说界面开发 swing 的mvc模式还是很强的 extjs 基本上都是照搬它的设计思想

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-24 15:29 by
看起来确实很棒

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-24 23:07 by
很不错。。。

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-25 09:10 by 日月雨林@gmail.com
@beansoft
呵呵,最近很少看到beansoft老师在blogjava上发表文章哦。

# 找不到皮肤  回复     

2009-05-25 22:23 by
我去网站下载了substance-all,打算山寨你的qq界面,可是这么找不到
org.jvnet.substance.skin.substanceravengraphitelookandfeel
这个类呢?
望兄弟告知!

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-26 08:56 by 日月雨林@gmail.com
@梁晟
在包里面有啊,在src\org\jvnet\substance\skin 路径下啊!你打算改他的源码吗?
我用的是binary版的。源码只是研究一下看看的。

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-26 09:13 by
@梁晟
这个类 org.jvnet.substance.skin.substanceravengraphitelookandfeel 是在 substance.jar 包里,需要下载 substance 5.2 library ()。

# 麻烦你帮忙  回复     

2009-05-26 11:29 by
首先,谢谢你的回复!
能不能,把你的java版本的qq的源代码分享一下,按照你的做了,可是
标题栏还是没有随主题改变而改变。
我的邮箱: lshsm@163.com

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-26 11:39 by 日月雨林@gmail.com
@梁晟
在main方法里添加
jframe.setdefaultlookandfeeldecorated(true);
jdialog.setdefaultlookandfeeldecorated(true);
这里两行代码就可以了!

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-26 17:10 by beansoft
最近太忙了... 周末都没什么空

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-05-27 22:46 by
能不能给个源码研究研究 82055185@qq.com

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-06-03 01:25 by
请教楼主:用substance 4 完全正常的代码在 5 中出错,是什么原因呢?能详细讲解下吗?

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-06-05 15:22 by
给你个小提示 ,你的界面里面标签 就是带有qq图片的那个把它外层的容器边框设为0像素,这样的话你的那个图片右侧就不会显示出一块空白了

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-06-05 15:38 by 日月雨林@gmail.com
@龙华城
你用netbeans的设计器,你也可以做到的。源码就不发了。

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-06-05 15:40 by 日月雨林@gmail.com
@淡茗
substance 5.1里水印功能有bug ,我在博客里已经说明了,你难道没看到吗? 用5.2 没有问题了。

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2009-06-05 15:40 by 日月雨林@gmail.com
@游客
谢谢你的提醒,我回去改改!呵呵!

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2010-06-01 17:44 by
很精彩的东西呀。

# re: 用开源look&feel (substance)写 漂亮的swing应用程序  回复     

2012-07-19 21:28 by
很不错!

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


网站导航:
              
 
网站地图