码迷,mamicode.com
首页 > Windows程序 > 详细

Swing - Nimbus Look and Feel Setting

时间:2014-08-06 18:19:01      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   java   使用   io   

Swing - Nimbus Look and Feel Setting

一、Java 6和Java 7中设置Nimbus风格

在Java 6中Swing新增了一种界面风格-Nimbus,类名为com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel。

在Java 7更新之后,Nimbus风格的实现类移动到了javax.swing.plaf.nimbus.NimbusLookAndFeel,同时为了向后兼容,com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel纯粹直接继承自javax.swing.plaf.nimbus.NimbusLookAndFeel。

在正常情况下,我们可以使用以下方式来设置Nimbus风格(官方写法,这种写法在没有Nimbus支持的Java 5中就不会设置Nimbus,不至于引起报错):

try {
    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
            UIManager.setLookAndFeel(info.getClassName());
            break;
        }
    }
} catch (Exception e) {
    // If Nimbus is not available, you can set the GUI to another look and feel.
}

二、Nimbus修改默认设置的Bug和改进方案

这个设置本没有任何问题,但是当我们需要修改Nimbus的一些默认设置时,比如将整体风格的背景色设置为白色,我们会首先想到使用UIManger.put("background", Color.WHITE),但是很遗憾Nimbus对这种常规设置的支持有缺陷——不响应。经过四处查询解决方案,发现通过以下方式可以成功的设置Nimbus的一些设置(这种写法在Java 5中会报错,找不到类):

UIManager.setLookAndFeel(new NimbusLookAndFeel() {

    @Override
    public UIDefaults getDefaults() {
        UIDefaults defaults = super.getDefaults();
        defaults.put("background", Color.WHITE);
        defaults.put("ScrollBar.width", 10);
        return defaults;
    }
});

将代码片段2放在一个新的类的一个方法中,并将代码片段1中的行UIManager.setLookAndFeel(info.getClassName());替换为这个新方法,在Java 6中编译后,在Java 5中也可以运行,不会设置Nimbus风格也不会报错。

三、Desktop和Applet模式下的设置

将上面的设置Nimbus风格的代码放在一个方法中,SwingTool.setNimbusLookAndFeel()。

在Desktop模式下,在main()方法的第一句话加入:

SwingTool.setNimbusLookAndFeel()

而在Applet的启动方法init()的最后位置加上以下代码:

SwingTool.setNimbusLookAndFeel();
SwingUtilities.updateComponentTreeUI(this);

请注意,Applet模式下一定要将上述代码放在init()方法的最后,放在方法开头是不生效的

Swing - Nimbus Look and Feel Setting,布布扣,bubuko.com

Swing - Nimbus Look and Feel Setting

标签:des   style   blog   http   color   java   使用   io   

原文地址:http://www.cnblogs.com/alanzyy/p/3894627.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!