先看一段代码吧。
public class LAF_Local_1 extends javax.swing.JFrame {
public LAF_Local_1() {
super("透明窗体");
this.setLayout(new java.awt.FlowLayout());
this.add(new javax.swing.JButton("按钮"));
this.add(new javax.swing.JCheckBox("复选按钮"));
this.add(new javax.swing.JRadioButton("单选按钮"));
this.add(new javax.swing.JProgressBar(20, 100));
this.setSize(new java.awt.Dimension(400, 300));
this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
javax.swing.JFrame.setDefaultLookAndFeelDecorated(true);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
java.awt.Window w = new LAF_Local_1();
w.setVisible(true);
com.sun.awt.AWTUtilities.setWindowShape(w,
new java.awt.geom.Ellipse2D.Double(0, 0,
w.getWidth(), w.getHeight()));
com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.6f);
}
});
}
}
先说可能遇到的问题:“com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.6f);”此行代码会报错“Access restriction: The type AWTUtilities is not accessible due to restriction on required library D:\Program Files\jdk1.6.0_24\jre\lib\rt.jar”,而解决的方法也很怪异,要在要在project build path中先移除JRE System Library,再添加库JRE System Library,之后就可以了。类似的问题也可以如此解决。还试过强行运行程序,也没问题。而project build path在哪,下面在介绍添加第三方jar包时,你就能看到它。
在上面的代码中,没用到第三方的jar包,只是掉用几个比较偏的方法也可玩点花样。
javax.swing.JFrame.setDefaultLookAndFeelDecorated(true);这一语句具体意思我还说不清楚,可查看AIP文档。加上此语句,界面看上去很不顺眼,难看。
com.sun.awt.AWTUtilities.setWindowShape(w, new java.awt.geom.Ellipse2D.Double(0, 0, w.getWidth(), w.getHeight()));没有解释,但从方法名及效果上看可知此语句能改变窗体的形状,前提是必须加上上面那句语句。为啥,不知道。
com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.6f);添加此语句可改变窗体的透明度。第二个参数的赋值范围是0.0f~1.0f,数值越小,窗体透明度越高。
Swing中还自带了一款皮肤,看上去还蛮顺眼的。将上一段代码中的main方法改一下:
public static void main(String[] args) {
try {
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (javax.swing.UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
java.awt.Window w = new LAF_Local_1();
w.setVisible(true);
com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.6f);
}
});
}
此款皮肤支持上面提到的改变窗体透明度的方法,不支持上面的改变窗体形状的方法。至于能否满足要求,因人而异喽。接下来将介绍一款第三方的皮肤库:substance.jar。
不同版本的substance皮肤库其皮肤的样式及所在目录可能会不同。我用的是5.2版本的。其所有皮肤都再org.jvnet.substance.skin目录下,皮肤样式类名如下:
- AutumnSkin
- BusinessSkin
- BusinessBlackSteelSkin
- BusinessBlueSteelSkin
- ChallengerDeepSkin
- CremeCoffeeSkin
- CremeSkin
- DustCoffeeSkin
- DustSkin
- EmeraldDuskSkin
- MagmaSkin
- MistAquaSkin
- MistSilverSkin
- ModerateSkin
- NebulaBrickWallSkin
- NebulaSkin
- OfficeBlue2007Skin
- OfficeSilver2007Skin
- RavenGraphiteGlassSkin
- RavenGraphiteSkin
- RavenSkin
- SaharaSkin
- TwilightSkin
-
- /---------------------------------------------/
- SubstanceAutumnLookAndFeel
- SubstanceBusinessBlackSteelLookAndFeel
- SubstanceBusinessBlueSteelLookAndFeel
- SubstanceBusinessLookAndFeel
- SubstanceChallengerDeepLookAndFeel
- SubstanceCremeCoffeeLookAndFeel
- SubstanceCremeLookAndFeel
- SubstanceDustCoffeeLookAndFeel
- SubstanceDustLookAndFeel
- SubstanceEmeraldDuskLookAndFeel
- SubstanceMagmaLookAndFeel
- SubstanceMistAquaLookAndFeel
- SubstanceMistSilverLookAndFeel
- SubstanceModerateLookAndFeel
- SubstanceNebulaBrickWallLookAndFeel
- SubstanceNebulaLookAndFeel
- SubstanceOfficeBlue2007LookAndFeel
- SubstanceOfficeSilver2007LookAndFeel
- SubstanceRavenGraphiteGlassLookAndFeel
- SubstanceRavenGraphiteLookAndFeel
- SubstanceRavenLookAndFeel
- SubstanceSaharaLookAndFeel
- SubstanceTwilightLookAndFee
-
- /----------------------------------------------/
- SubstanceCrosshatchWatermark
- SubstanceImageWatermark
- SubstanceNoiseWatermark
- SubstanceNullWatermark
- SubstancePlanktonWatermark
- SubstanceStripeWatermark
- SubstanceWatermarkl
以上水印还有待测试
使用substance的方法有多种;以下介绍两种:
/---------------------------1---------------------------/:
将上面例子中的main函数做一下改变
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true); //加上此语句连同窗体外框也改变
JDialog.setDefaultLookAndFeelDecorated(true); //加上此语句会使弹出的对话框也改变
try {
//新建一个图片水印,路径可以自己该,使用自己喜欢的图片来做应用程序的水印图片,貌似图片要在src子目录下
SubstanceImageWatermark watermark = new SubstanceImageWatermark(LAF_Local_4.class.getResourceAsStream("001.bmp"));
watermark.setKind(ImageWatermarkKind.APP_CENTER);
watermark.setOpacity((float) 0.7); //更改水印透明度
UIManager.setLookAndFeel(new SubstanceOfficeBlue2007LookAndFeel());
// UIManager.setLookAndFeel(new SubstanceCremeLookAndFeel());
//可根据根据外观类型,设置相应的皮肤,实践证实不一定需要一一对应
// SubstanceSkin skin = new OfficeBlue2007Skin().withWatermark(watermark);
SubstanceSkin skin = new CremeSkin().withWatermark(watermark);
//此语句设置外观
SubstanceLookAndFeel.setSkin(skin);
} catch (UnsupportedLookAndFeelException ex) {
Logger.getLogger(LAF_Local_4.class.getName()).log(Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
LAF_Local_4 text = new LAF_Local_4();//实例化窗体对象
text.setVisible(true);
}
});
}
/------------------2--------------------/:
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
SubstanceImageWatermark watermark = new SubstanceImageWatermark(LAF_Local_4.class.getResourceAsStream("001.bmp"));
watermark.setKind(ImageWatermarkKind.APP_CENTER);
watermark.setOpacity((float) 0.7);
SubstanceLookAndFeel.setSkin(new OfficeBlue2007Skin().withWatermark(watermark));
try {
new LAF_Local_3().setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
在用上面的代码之前,应将substance.jar包导入工程中,注意是工程中。可以在src的同根目录下新建一个lib文件夹,将substance.jar包放入其中。右击工程,在弹出菜单的最下面一行有个Properties选项,左击该选项,在弹出的对话框的左面板有个Java Build Path的选项,左击该选项,此时对话框右面板变更,在对话框的最右边的面板有个Add Jar选项,将substance导入,接下来确定即可。
本人对Substance的了解有限,只能做些表面功夫。而一个好的界面仅有皮肤是不够的,内容及其布局的安排才是真功夫,所以本人觉得界面的美化,还需要加深对布局管理器、面板的了解,这有这样才能做出好看而实用的界面。另外使用第三方的jar包美化界面会出现bug,如:本人在做连连看时用到了substance.jar包,当改变Jtable中的数据时,其框架大小就会初始化,需要将相关值重新设置,这或许就是使用它的代价吧。更多信息可上网查找资料,由于在官网找不到资源,本人使用的substance.jar包也是别人共享的,所以在这也将资源一并上传。
分享到:
相关推荐
Java Swing 是Java标准库中的一个组件,用于创建图形用户界面(GUI)。Swing 提供了丰富的组件集合,如按钮、文本框、菜单等,用于构建桌面应用程序。然而,Swing 的默认界面风格(LookAndFeel)在视觉上可能相对...
Java GUI(图形用户界面)是Java编程语言中用于创建用户交互界面的重要部分。在Java中,我们可以使用多种库和框架来构建美观且功能丰富的界面,其中"substance.jar"就是一个专注于提供高级界面主题和外观的开源库。...
在Swing这一Java的图形用户界面(GUI)工具包中,虽然提供了基本的组件和布局管理器,但默认的UI设计往往显得较为朴素。为了使Swing应用看起来更加现代化和吸引人,我们可以引入第三方库,如本案例中的"substance....
该报用于美化java界面,载入包后加入如下代码: try { UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceFieldOfWheatLookAndFeel"); } catch (ClassNotFoundException e) { // TODO 自动生成的 ...
Java的Swing库是用于构建桌面应用程序的图形用户界面(GUI)工具包,它提供了丰富的组件和功能。然而,Swing的默认外观可能显得单调,不符合现代应用的审美标准。为了提升用户界面的视觉吸引力,开发者可以使用第三...
在Java编程领域,Swing库被广泛用于构建图形用户界面(GUI),但其默认的外观可能显得较为朴素,不能满足所有开发者对于美学的追求。为了解决这个问题,社区开发了如Substance和JTattoo这样的第三方库,它们提供了...
"Substance 6.1 Swing 皮肤包"是一款专为Java Swing应用设计的视觉样式库,它为Swing组件提供了丰富的、高度可定制的外观和感觉。Substance库以其独特的设计和灵活性,允许开发者轻松地改变应用程序的界面风格,从而...
总结来说,Java界面美化的关键在于利用第三方库如Substance,结合其提供的皮肤资源,替换默认的LookAndFeel,以提升应用的视觉体验。同时,实现皮肤切换功能可以让用户根据个人喜好定制界面,增加应用的吸引力和用户...
在Java GUI(图形用户界面)开发中,美观的界面设计对于提升用户体验至关重要。"Substance"和"Trident"是两个专门用于美化Java Swing应用程序的库,它们为开发者提供了丰富的主题和动画效果,使得Java GUI应用程序...
总的来说,Flamingo和Substance是Java开发中提升UI体验的强大工具,它们让开发者能够轻松创建专业且美观的Ribbon界面,并且可以根据用户需求定制各种皮肤效果。结合使用这两个库,开发者能够打造出既功能丰富又易于...
Substance.jar是一个开源的Java外观(LookAndFeel)实现,它提供了丰富的主题和自定义选项,可以让你的应用程序拥有各种风格各异的界面,从Windows到Mac OS X,甚至自定义的现代或扁平化设计。Substance提供了一种...
Java GUI(图形用户界面)是Java编程...通过这个GUI设计教程,你将学习到如何使用Java Swing和JavaFX创建功能丰富的图形用户界面,提升你的Java桌面应用开发能力。无论是初学者还是有一定经验的开发者,都能从中受益。
Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。在GUI设计上,Swing提供了丰富的组件和功能,但默认的外观可能显得较为单调。为了提升用户体验和视觉吸引力,...
JavaSE美化包与Substance库是为Java标准版应用程序提供界面美化和自定义主题功能的工具。在Java Swing或JavaFX应用中,Substance库允许开发者轻松改变应用程序的外观和感觉,创造出独特的用户界面风格,提升用户体验...
在这个Java实现的KMeans项目中,它不仅包含了算法的逻辑,还集成了图形用户界面(GUI),使得用户能够直观地观察聚类过程和结果。图形界面对于数据分析人员来说是一个非常友好的特性,它可以帮助我们更好地理解和...
Substance 是一个流行的 Java Swing 库,为 Java GUI 应用程序提供了丰富的皮肤和主题支持。这个源码包包含了 Substance 库的实现细节,对于深入理解 Swing 的自定义外观和用户体验设计有着重要的学习价值。以下是...
Swing Substance是一款为Java Swing界面库提供丰富主题和皮肤的框架,主要用于提升Java应用程序的用户界面美观度和用户体验。Substance-6.0是该框架的一个版本,它包含了一系列精心设计的UI主题,使得开发者可以轻松...
Java图形用户界面(GUI,Graphical User Interface)是Java编程中的一个重要组成部分,它允许开发者创建交互式的、视觉吸引人的应用程序。在本资源包中,包含了丰富的教程、PPT、PDF文件以及美化包,旨在帮助你在一...
在创建用户界面时,Java提供了多种库来帮助开发者创建美观且功能丰富的图形用户界面(GUI)。Substance框架是其中一个,它为Java Swing提供了丰富的皮肤和主题,使得开发者能够轻松打造出具有专业外观和感觉的应用...
许多开源项目提供了专门用于Java界面美化的jar包,例如JIDE Common、 Substance、JFreeChart等。JIDE Common提供了一系列增强版的Swing组件,Substance库则提供了大量预设的主题,JFreeChart则为数据可视化提供了...