可通过设置Swing的主题使窗体及控件达到部分美化的效果,当然也可以通过自定义控件或者自制UI的方式美化控件及窗体外观。这里只介绍Swing主题设置的几种方式。
一、Java Swing自带主题
Java中的几种LookandFeel(此部分代码在main方法打开GUI界面之前实现)
Metal风格(默认)
String lookAndFeel ="javax.swing.plaf.metal.MetalLookAndFeel";
UIManager.setLookAndFeel(lookAndFeel);
Windows风格
String lookAndFeel ="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
UIManager.setLookAndFeel(lookAndFeel);
Windows Classic风格
String lookAndFeel ="com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel";
UIManager.setLookAndFeel(lookAndFeel);
Motif风格
String lookAndFeel ="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
UIManager.setLookAndFeel(lookAndFeel);
Mac风格 (需要在相关的操作系统上方可实现)
String lookAndFeel ="com.sun.java.swing.plaf.mac.MacLookAndFeel";
UIManager.setLookAndFeel(lookAndFeel);
GTK风格 (需要在相关的操作系统上方可实现)
String lookAndFeel ="com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
UIManager.setLookAndFeel(lookAndFeel);
可跨平台的默认风格
String lookAndFeel =UIManager.getCrossPlatformLookAndFeelClassName();
UIManager.setLookAndFeel(lookAndFeel);
当前系统的风格
String lookAndFeel =UIManager.getSystemLookAndFeelClassName();
UIManager.setLookAndFeel(lookAndFeel);
二、JTattoo.jar主题
JTattoo由几种不同的Swing应用程序外观组成。使开发人员能够通过优秀的用户界面改进他们的应用程序。JTattoo为那些不喜欢标准JDK外观的用户打开了桌面应用程序的大门。
1)下载地址:
http://www.jtattoo.net/Download.html
https://mvnrepository.com/artifact/com.jtattoo/JTattoo
2)使用方法:
try {
JFrame.setDefaultLookAndFeelDecorated(true);
UIManager.setLookAndFeel("com.jtattoo.plaf.aero.AeroLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
3)常用皮肤:
com.jtattoo.plaf.noire.NoireLookAndFeel 柔和黑
com.jtattoo.plaf.smart.SmartLookAndFeel 木质感+xp风格
com.jtattoo.plaf.mint.MintLookAndFeel 椭圆按钮+黄色按钮背景
com.jtattoo.plaf.mcwin.McWinLookAndFeel 椭圆按钮+绿色按钮背景
com.jtattoo.plaf.luna.LunaLookAndFeel 纯XP风格
com.jtattoo.plaf.hifi.HiFiLookAndFeel 黑色风格
com.jtattoo.plaf.fast.FastLookAndFeel 普通swing风格+蓝色边框
com.jtattoo.plaf.bernstein.BernsteinLookAndFeel 黄色风格
com.jtattoo.plaf.aluminium.AluminiumLookAndFeel 椭圆按钮+翠绿色按钮背景+金属质感
com.jtattoo.plaf.aero.AeroLookAndFeel xp清新风格
com.jtattoo.plaf.acryl.AcrylLookAndFeel 布质感+swing纯风格
com.jtattoo.plaf.graphite.GraphiteLookAndFeel
com.jtattoo.plaf.texture.TextureLookAndFeel
三、substance-6.0.jar主题
1)依赖库
laf-plugin-7.2.jar
http://www.java2s.com/Code/Jar/l/Downloadlafplugin72jar.htm
laf-widget-7.0.jar
http://www.java2s.com/Code/Jar/l/Downloadlafplugin72jar.htm
trident-7.0.jar
http://www.java2s.com/Code/Jar/l/Downloadlafplugin72jar.htm
2)使用方法:
这是因为Swing本身的线程不安全所致,swing界面刷新线程必须在由EDT分配,可以在SwingUtilities.invokeLater(()->{refreshCode});
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel("org.pushingpixels.substance.api.skin.SubstanceOfficeBlue2007LookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
//new窗体代码
}
});
3)常用皮肤:
org.pushingpixels.substance.api.skin.SubstanceAutumnLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceBusinessBlackSteelLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceBusinessBlueSteelLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceBusinessLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceChallengerDeepLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceCremeCoffeeLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceCremeLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceDustCoffeeLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceDustLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceEmeraldDuskLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceGeminiLookAndFeel.class
org.pushingpixels.substance.api.skin.SubstanceGraphiteAquaLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceGraphiteGlassLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceMagellanLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceMistAquaLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceMistSilverLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceModerateLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceNebulaBrickWallLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceNebulaLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceOfficeBlue2007LookAndFeel
org.pushingpixels.substance.api.skin.SubstanceOfficeSilver2007LookAndFeel
org.pushingpixels.substance.api.skin.SubstanceRavenLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceSaharaLookAndFeel
org.pushingpixels.substance.api.skin.SubstanceTwilightLookAndFeel