今天用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 界面如何?
原文地址:http://www.iteye.com/topic/394314
分享到:
相关推荐
精仿QQ2009登陆界面,如果有交流,可登陆 http://www.kfzly.cn/ 开发者乐园 QQ群:81143085 开发者乐园交流群
swing写的QQ2009登陆界面!!!!!!!!!!!!!!
qq2009的界面源代码qq2009的界面源代码qq2009的界面源代码
这是我近期整理电脑里面的资源 都给大家咯 希望大家喜欢!
QQ2009 聊天记录 截取 MSN 聊天记录 查看
仿QQ2009的登录界面!其他如题希望你们会喜欢!
仿QQ2009界面,详见http://blog.csdn.net/ringphone/archive/2010/01/08/5154760.aspx
本软件是模仿QQ2009的功能和界面设计而开发的基于C# Winfrom 程序 希望能对学习C#Winfrom的朋友们有所帮助
VB高仿的QQ2009界面及功能附源码 VB高仿的QQ2009界面及功能附源码
皮肤制作,估计是很多winform新手都想学的,网上也有... 我们当然得从它的文件夹说起,打开QQ游戏的安装文件夹,可以发现一个 名为"Res"的文件,很明显,这就是它的资源文件夹,我们只要关注它下面的几个文件夹就可以了
之前上传了一个测试包,现在把这个QQ2009界面控件上传上来,提供给大家一起共享。 [colin3dmax]为大家提供更多免费资源
工程用NetBeans打开,运行源码包fq文件夹下的Main.java文件或者右击项目点击运行。该工程基于JavaSwing模仿QQ2009登录界面编程,运行后显示的登录界面与QQ2009界面十分相似,但这只是界面而并没有实现聊天功能。
java swing实现QQ2009版本,包括系统布局,重绘,托盘等。
完全模仿QQ2009界面做出来的。做这个东西是因为MFC课要交个大作业。里面的按键没有任何反应。编辑框的字体也没有设置。
用易语言制作带后门的QQ2009登陆器 —— 带源码! 用易语言制作带后门的QQ2009登陆器 —— 带源码! 用易语言制作带后门的QQ2009登陆器 —— 带源码!
VC++仿QQ2009主界面及托盘...这里请注意,本程序是基于RingSDK界面类库,编译需要此类库支持,本程序也正是RingSDK库的一个演示程序,希望通过这个演示程序让大家更熟悉RingSDK的用法、功能和新特性,运行截图如上示。
(看见下面有人怀疑说为什么教程这么小,特此解释一下:其实上面已经说了本教程是图文教程,图文教程压缩后当然小了,压缩包里面的文件有:一个已经做好的皮肤“美丽丹儿.kipx”,教程:“QQ2009皮肤制作.doc”及KIPX...
仿QQ2009界面提示代码 lhgdialog DIV弹出窗口框架是一个简洁、高效、美观、易用的多功能弹出窗口组件。
高仿QQ2009界面华丽,本人收藏已久,今天分享给大家哦
纯的VB代码,仿的很完美,学习的好东西,改改后可以干什么,你懂的