Posted on 2008-06-05 20:23
kooyee 阅读(838)
评论(0) 编辑 收藏 所属分类:
Swing/Applet
自从JDK1.4版本后Swing程序就支持用户自定义外观,以后就不用再使用java原始的‘丑陋’外观。下面我们就来看一下如何让程序使用我们熟悉的XP外观。
第一种方法:
在code中加入
UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName());
例如
public static void main(String[] args)
{
try
{
UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception e) { }
new SwingApplication(); //Create and show the GUI.
}
getCrossPlatformLookAndFeelClassName调用通用的外观,适合任何系统。
若使用getSystemLookAndFeelClassName则根据本地的系统使用外观, 如果要指定使用一种外观则带入具体的外观的类的名字。例如,使用GTK+的外观的代码
UIManager.setLookAndFeel( "com.sun.java.swing.plaf.gtk.GTKLookAndFeel" );
第二种方法:
在命令行中定义 swing.laf
属性. 例如: java -Dswing.laf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel MyApp java -Dswing.laf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel MyApp
第三种方法:
使用 swing.properties
文件来设置 swing.laf
属性. 这个文件一般位于JRE的lib文件夹下
在
Swing properties文件中加入一行 swing.laf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel
参考:
setLookAndFeel的参数可以是:
UIManager.getCrossPlatformLookAndFeelClassName()
- Returns the look and feel that works on all platforms &151; the Java look and feel.
UIManager.getSystemLookAndFeelClassName()
- Specifies the look and feel for the current platform. On Microsoft Windows platforms, this specifies the Windows look and feel. On Mac OS platforms, this specifies the Mac OS look and feel. On other Unix platforms, such as Solaris or Linux, this returns the CDE/Motif look and feel.
"com.sun.java.swing.plaf.gtk.GTKLookAndFeel
- Specifies the GTK+ look and feel. Introduced in release 1.4.2. You can specify the particular theme either using a resource file otherIcon (outside of the tutorial) or the
gtkthemefile
command-line parameter. Here is an example: java -Dswing.gtkthemefile=customTheme/gtkrc Application
"javax.swing.plaf.metal.MetalLookAndFeel
- Specifies the Java look and feel. (The codename for this look and feel was Metal.)
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel
- Specifies the Windows look and feel. Currently, you can use this look and feel only on Microsoft Windows systems.
Version Note: As of release 1.4.2, WindowsLookAndFeel
has been updated to mimic the Windows XP look and feel when running on the Windows XP platform.
"com.sun.java.swing.plaf.motif.MotifLookAndFeel
- Specifies the CDE/Motif look and feel. This look and feel can be used on any platform.
如果指定的class不存在,swing自动调用默认的metal外观。所以当使用UIManager.getSystemLookAndFeelClassName()
时, 如果没有根据本地系统调用相应的外观,而是显示默认的metal外观。这个多半是由于没有找到相应的外观class而导致的,这就需要把更多相应的外观class加入到应用中
如果在运行applet时提示‘安装plugin’, 是由于jsp tag中jreversion的值设置问题(浏览器无法调用相应的版本)。比如把jreversion="1.6.0" 改为jreversion="1.6" 可以解决问题。jreversion="1.6"表示为所有1.6的版本, 1.6.0是具体的一个版本。所以当浏览器使用别的1.6版本的jre,会与jreversion="1.6.0"冲突。
在Linux下使用getSystemLookAndFeelClassName时, 使用了GNOME才能自动调用GTK外观。其他的return metal外观。SUSE中在‘more application‘中打开的FF才能正确的调用GTK外观(可能是SUSE的bug)。